$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: matt_calabrese_at_[hidden]
Date: 2007-06-15 20:00:01
Author: matt_calabrese
Date: 2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
New Revision: 7069
URL: http://svn.boost.org/trac/boost/changeset/7069
Log:
Added:
   sandbox/SOC/2006/concurrency/trunk/boost/act/detail/next.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/detail/prior.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_acquire.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_acquire_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_release.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_release_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_result.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_result_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_operation.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_acquire_windows.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_acquire_windows.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_release_windows.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/binary_bitwise_operation_checker.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign.hpp
   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_acquire.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_acquire_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_release.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_release_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_result.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_result_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_operation.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/bitor_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/bitor_assign_acquire.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/bitor_assign_release.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/bitor_assign_result.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/detail/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/detail/bitor_assign_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/detail/bitor_assign_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/detail/bitor_assign_operation.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/detail/bitor_assign_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/compl_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/compl_assign_acquire.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/compl_assign_release.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/compl_assign_result.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/detail/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/detail/compl_assign_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/detail/compl_assign_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/detail/compl_assign_operation.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/detail/compl_assign_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acquire_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_release_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_default_impl.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder_dont_include.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder_fwd_dont_include.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_operation.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_result_impl.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/custom_impl.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/default_impl.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_begin_dont_include.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_end_dont_include.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_fwd_begin_dont_include.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_fwd_end_dont_include.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/full_name.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_begin_dont_include.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_end_dont_include.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_dont_include.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_fwd_dont_include.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/detail/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/detail/divide_assign_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/detail/divide_assign_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/detail/divide_assign_operation.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/detail/divide_assign_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/divide_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/divide_assign_acquire.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/divide_assign_release.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/divide_assign_result.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acquire_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_release_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/detail/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/detail/mod_assign_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/detail/mod_assign_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/detail/mod_assign_operation.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/detail/mod_assign_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/mod_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/mod_assign_acquire.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/mod_assign_release.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/mod_assign_result.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/detail/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/detail/multiply_assign_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/detail/multiply_assign_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/detail/multiply_assign_operation.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/detail/multiply_assign_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/multiply_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/multiply_assign_acquire.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/multiply_assign_release.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/multiply_assign_result.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/detail/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/detail/negate_assign_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/detail/negate_assign_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/detail/negate_assign_operation.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/detail/negate_assign_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/negate_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/negate_assign_acquire.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/negate_assign_release.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/negate_assign_result.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/retrieve.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/retrieve_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_operation.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_acquire.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_release.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_result.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/detail/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/detail/xor_assign_acquire_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/detail/xor_assign_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/detail/xor_assign_operation.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/detail/xor_assign_release_default.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/xor_assign.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/xor_assign_acquire.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/xor_assign_release.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/xor_assign_result.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/utility/
   sandbox/SOC/2006/concurrency/trunk/boost/utility/binary.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/Jamfile.v2
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/Jamfile.v2
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/binary.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/add_assign.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/add_assign_acquire.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/add_assign_helper.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/add_assign_release.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign/
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign/assign.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign/assign_acquire.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign/assign_helper.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_acquire.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_helper.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_release.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_retrieve_helper.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/bitand_assign/
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/bitand_assign/bitand_assign.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/integral_additive_helper.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/operation_result_checker.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/random_uint8.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/retrieve.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/subtract_assign.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/subtract_assign_acquire.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/subtract_assign_helper.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/subtract_assign_release.cpp
Properties modified: 
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/   (props changed)
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/   (props changed)
Text files modified: 
   sandbox/SOC/2006/concurrency/trunk/boost/act/config/interlocked/has_interlocked_operations.hpp                                     |     4                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/consumer_policy/concurrent_consumer_policy/detail/concurrent_scoped_consumer_impl.hpp |     4                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked.hpp                                                                       |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign.hpp                                                         |    12 +                                       
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_acquire.hpp                                                 |    30 ++---                                   
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_windows.hpp                                          |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was.hpp                                           |    12 +                                       
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_acquire.hpp                                   |    31 ++---                                   
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_release.hpp                                   |    31 ++---                                   
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement.hpp                                                   |   107 +---------------------                  
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acquire.hpp                                           |   140 +----------------------------           
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_release.hpp                                           |   139 +---------------------------            
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_result.hpp                                            |    16 +++                                     
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_result_fwd.hpp                                        |    19 +++                                     
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_operation.hpp                                  |    40 ++++++++                                
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support.hpp                                                    |   192 ++++++++++++++++++++++++++++++++++++++- 
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support_data.hpp                                               |    41 +++++++-                                
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/default_unary_impl.hpp                                             |     4                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/interlocked_operand_validators.hpp                                 |    41 +++-----                                
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder.hpp                                                |   157 ++------------------------------        
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_fwd.hpp                                            |    99 ++------------------                    
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_operation.hpp                                  |    11 +-                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment.hpp                                                   |     6                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acquire.hpp                                           |     7 +                                       
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_release.hpp                                           |     6                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_result.hpp                                            |     6                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/integer/selection.hpp                                                     |     6                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/integer/types.hpp                                                         |    11 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked_fwd.hpp                                                                   |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/queue_policy/bounded_queue_policy/safe_single_push_pop_queue.hpp                      |     8                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/concepts/interlocked_type.qbk                                                      |     4                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/consumer_policy_tester.hpp                                                        |     4                                         
   32 files changed, 450 insertions(+), 744 deletions(-)
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/config/interlocked/has_interlocked_operations.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/config/interlocked/has_interlocked_operations.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/config/interlocked/has_interlocked_operations.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -9,9 +9,9 @@
 #ifndef BOOST_ACT_CONFIG_INTERLOCKED_HAS_INTERLOCKED_HPP
 #define BOOST_ACT_CONFIG_INTERLOCKED_HAS_INTERLOCKED_HPP
 
-#include <boost/config.hpp>
+#include <boost/act/interlocked/detail/cas_support_data.hpp>
 
-#ifdef BOOST_WINDOWS
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_DATA
 #define BOOST_ACT_HAS_INTERLOCKED_OPERATIONS
 #endif
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/consumer_policy/concurrent_consumer_policy/detail/concurrent_scoped_consumer_impl.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/consumer_policy/concurrent_consumer_policy/detail/concurrent_scoped_consumer_impl.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/consumer_policy/concurrent_consumer_policy/detail/concurrent_scoped_consumer_impl.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -10,7 +10,7 @@
 #define BOOST_ACT_CONSUMER_POLICY_SCOPED_CONCURRENT_CONSUMER_DETAIL_SCOPED_C_HPP
 
 #include <boost/act/interlocked/assign/assign_acquire.hpp>
-#include <boost/act/interlocked/safe_get.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
 
 #include <boost/thread/thread.hpp>
 
@@ -72,7 +72,7 @@
     for(;;)
     {
       bool const is_triggered_to_close
-        = interlocked::safe_get( body_m.is_triggered_to_close_m );
+        = interlocked::retrieve( body_m.is_triggered_to_close_m );
 
       size_type queue_size = body_m.queue_m.size();
 
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/detail/next.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/detail/next.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,24 @@
+/*=============================================================================
+    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_DETAIL_NEXT_HPP
+#define BOOST_ACT_DETAIL_NEXT_HPP
+
+namespace boost { namespace act { namespace detail {
+
+template< typename Type >
+Type next( Type source )
+{
+  ++source;
+
+  return source;
+}
+
+} } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/detail/prior.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/detail/prior.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,24 @@
+/*=============================================================================
+    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_DETAIL_PRIOR_HPP
+#define BOOST_ACT_DETAIL_PRIOR_HPP
+
+namespace boost { namespace act { namespace detail {
+
+template< typename Type >
+Type prior( Type source )
+{
+  --source;
+
+  return source;
+}
+
+} } }
+
+#endif
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-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -13,6 +13,6 @@
 #include <boost/act/interlocked/assign_if_was.hpp>
 #include <boost/act/interlocked/decrement.hpp>
 #include <boost/act/interlocked/increment.hpp>
-#include <boost/act/interlocked/safe_get.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
 
 #endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_ADD_ASSIGN_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_HPP
+
+#include <boost/act/interlocked/add_assign/add_assign.hpp>
+#include <boost/act/interlocked/add_assign/add_assign_acquire.hpp>
+#include <boost/act/interlocked/add_assign/add_assign_release.hpp>
+#include <boost/act/interlocked/add_assign/add_assign_result.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_ADD_ASSIGN_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
+( add_assign, full_barrier, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_acquire.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_acquire.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_ACQUIRE_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_ADD_ASSIGN_ACQUIRE_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
+( add_assign, acquire, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_acquire_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_acquire_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_ACQUIRE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_ADD_ASSIGN_ACQUIRE_FWD_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO                 \
+( add_assign, acquire, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_ADD_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO                 \
+( add_assign, full_barrier, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_release.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_release.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_RELEASE_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_ADD_ASSIGN_RELEASE_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
+( add_assign, release, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_release_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_release_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_RELEASE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_ADD_ASSIGN_RELEASE_FWD_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO                 \
+( add_assign, release, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_result.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_result.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,16 @@
+/*=============================================================================
+    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_RESULT_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_ADD_ASSIGN_RESULT_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO add_assign
+
+#include <boost/act/interlocked/detail/binary_result_impl.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_result_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_result_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_RESULT_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_ADD_ASSIGN_RESULT_FWD_HPP
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType, typename OperandType = TargetType >
+struct add_assign_result;
+
+} } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_acquire_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_acquire_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,21 @@
+/*=============================================================================
+    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_ACQUIRE_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_DETAIL_ADD_ASSIGN_ACQUIRE_DEFAULT_HPP
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#endif
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO                         \
+( add_assign, acquire, + )
+
+#include <boost/act/interlocked/detail/binary_default_impl.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,21 @@
+/*=============================================================================
+    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_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_DETAIL_ADD_ASSIGN_DEFAULT_HPP
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#endif
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO                         \
+( add_assign, full_barrier, + )
+
+#include <boost/act/interlocked/detail/binary_default_impl.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_operation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_operation.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_ADD_ASSIGN_DETAIL_ADD_ASSIGN_OPERATION_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_DETAIL_ADD_ASSIGN_OPERATION_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_INFO                     \
+( add_assign, +, inverse(-) )
+
+#include <boost/act/interlocked/detail/binary_operation.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_release_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_release_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,21 @@
+/*=============================================================================
+    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_RELEASE_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_DETAIL_ADD_ASSIGN_RELEASE_DEFAULT_HPP
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#endif
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO                         \
+( add_assign, release, + )
+
+#include <boost/act/interlocked/detail/binary_default_impl.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_ADD_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/add_assign/add_assign_fwd.hpp>
+#include <boost/act/interlocked/add_assign/add_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/add_assign/add_assign_release_fwd.hpp>
+#include <boost/act/interlocked/add_assign/add_assign_result_fwd.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-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -9,8 +9,6 @@
 #ifndef BOOST_ACT_INTERLOCKED_ASSIGN_ASSIGN_HPP
 #define BOOST_ACT_INTERLOCKED_ASSIGN_ASSIGN_HPP
 
-#include <boost/act/interlocked/assign/detail/assign_impl.hpp>
-
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/remove_volatile.hpp>
 
@@ -21,8 +19,12 @@
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_decl.hpp>
-#include <boost/act/interlocked/detail/has_nested_type.hpp>
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+( assign, full_barrier )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
 
 namespace boost { namespace act { namespace interlocked {
 
@@ -76,4 +78,6 @@
 
 } } }
 
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
 #endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_acquire.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_acquire.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_acquire.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -9,9 +9,6 @@
 #ifndef BOOST_ACT_INTERLOCKED_ASSIGN_ASSIGN_ACQUIRE_HPP
 #define BOOST_ACT_INTERLOCKED_ASSIGN_ASSIGN_ACQUIRE_HPP
 
-#include <boost/act/interlocked/assign/detail/assign_acquire_impl.hpp>
-#include <boost/act/interlocked/assign/detail/assign_acquire_default_impl.hpp>
-
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/remove_volatile.hpp>
 
@@ -23,8 +20,12 @@
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_decl.hpp>
-#include <boost/act/interlocked/detail/has_nested_type.hpp>
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+( assign, acquire )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
 
 namespace boost { namespace act { namespace interlocked {
 
@@ -43,20 +44,10 @@
 {
   typedef typename remove_volatile< TargetType >::type type;
   type const source = static_cast< type >( new_value );
-  typedef typename assign_result< TargetType >::type result_type;
 
-  typedef detail::assign_acquire_impl
-          < result_type
-          , type
-          >
-          impl_type;
-
-  return mpl::if_< detail::has_nested_type< impl_type >
-                 , impl_type
-                 , detail::assign_acquire_default_impl< result_type, type >
-                 >
-                 ::type
-                 ::execute( destination, source );
+  return detail::assign_acquire_impl
+         < typename assign_result< TargetType >::type, type >
+         ::execute( destination, source );
 
 }
 
@@ -74,7 +65,6 @@
 assign_acquire( TargetType& destination, SourceType const& new_value )
 {
   typedef typename assign_result< TargetType >::type result_type;
-
   typedef typename TargetType::internal_type internal_type;
 
   return result_type
@@ -90,4 +80,6 @@
 
 } } }
 
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
 #endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_acquire_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_acquire_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,29 @@
+/*=============================================================================
+    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_ACQUIRE_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_DETAIL_ASSIGN_ACQUIRE_DEFAULT_HPP
+
+#include <boost/act/interlocked/assign/assign.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct assign_acquire_default_impl
+{
+  template< typename LeftType, typename RightType >
+  static ResultType execute( LeftType& left, RightType& right )
+  {
+    return interlocked::assign( left, right );
+  }
+};
+
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_acquire_windows.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_acquire_windows.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,103 @@
+/*=============================================================================
+    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_ACQUIRE_VISTA_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_DETAIL_ASSIGN_ACQUIRE_VISTA_HPP
+
+#include <boost/config.hpp>
+
+#ifndef BOOST_WINDOWS
+#error Windows interlocked assign acquire included on non-Windows OS.
+#else
+
+#include <windows.h>
+
+#if WINVER < 0x0600
+#error Windows interlocked assign acquire included on pre-vista Windows OS.
+#else
+
+#include <boost/utility/enable_if.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct assign_acquire_impl
+{
+  template< typename LeftType, typename RightType >
+  static
+  typename enable_if_c
+  <
+    ( sizeof( LeftType ) == 4 )
+  , ResultType
+  >
+  ::type
+  execute( LeftType& left, RightType& right )
+  {
+    return ResultType
+           (
+             static_cast< UnqualifiedType >
+             (
+               InterlockedExchangeAcquire
+               ( reinterpret_cast< LONG volatile* >( &left )
+               , reinterpret_cast< LONG const& >( right )
+               )
+             )
+           , right
+           );
+  }
+
+  template< typename LeftType, typename RightType >
+  static
+  typename enable_if_c
+  <
+    ( sizeof( LeftType ) == 8 )
+  , ResultType
+  >
+  ::type
+  execute( LeftType& left, RightType& right )
+  {
+    return ResultType
+           (
+             static_cast< UnqualifiedType >
+             (
+               InterlockedExchange64Acquire
+               ( reinterpret_cast< LONGLONG volatile* >( &left )
+               , reinterpret_cast< LONGLONG const& >( right )
+               )
+             )
+           , right
+           );
+  }
+
+  template< typename LeftType, typename RightType >
+  static
+  ResultType
+  execute( LeftType*& left, RightType*& right )
+  {
+    return ResultType
+           (
+             static_cast< UnqualifiedType >
+             (
+               InterlockedExchangePointerAcquire
+               ( const_cast< void* volatile* >
+                 (
+                   reinterpret_cast< void const volatile* volatile* >( &left )
+                 )
+               , const_cast< void* >( right )
+               )
+             )
+           , right
+           );
+  }
+};
+
+} } } }
+
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,36 @@
+/*=============================================================================
+    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_DEFAULT_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_DETAIL_ASSIGN_DEFAULT_IMPL_HPP
+
+#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 {
+
+template< typename ResultType, typename UnqualifiedType >
+struct assign_default_impl
+{
+  template< typename LeftType, typename RightType >
+  static ResultType execute( LeftType& left, RightType& right )
+  {
+    BOOST_MPL_ASSERT_MSG
+    (
+      ( mpl::apply< mpl::always< mpl::false_ >, TargetType >::type::value )
+    , NO_DEFAULT_INTERLOCKED_ASSIGN_IMPLEMENTATION
+    , ()
+    );
+  }
+};
+
+} } } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_windows.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_windows.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_windows.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -26,8 +26,6 @@
 template< typename ResultType, typename UnqualifiedType >
 struct assign_impl
 {
-  typedef void type;
-
   template< typename LeftType, typename RightType >
   static
   typename enable_if_c
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-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -9,8 +9,6 @@
 #ifndef BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_ASSIGN_IF_WAS_HPP
 #define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_ASSIGN_IF_WAS_HPP
 
-#include <boost/act/interlocked/assign_if_was/detail/assign_if_was_impl.hpp>
-
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/remove_volatile.hpp>
 
@@ -21,8 +19,12 @@
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_decl.hpp>
-#include <boost/act/interlocked/detail/has_nested_type.hpp>
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+( assign_if_was, full_barrier )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
 
 namespace boost { namespace act { namespace interlocked {
 
@@ -91,4 +93,6 @@
 
 } } }
 
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
 #endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_acquire.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_acquire.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_acquire.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -9,9 +9,6 @@
 #ifndef BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_ASSIGN_IF_WAS_ACQUIRE_HPP
 #define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_ASSIGN_IF_WAS_ACQUIRE_HPP
 
-#include <boost/act/interlocked/assign_if_was/detail/assign_if_was_acquire_impl.hpp>
-#include <boost/act/interlocked/assign_if_was/detail/assign_if_was_acquire_default_impl.hpp>
-
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/remove_volatile.hpp>
 
@@ -23,8 +20,12 @@
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_decl.hpp>
-#include <boost/act/interlocked/detail/has_nested_type.hpp>
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+( assign_if_was, acquire )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
 
 namespace boost { namespace act { namespace interlocked {
 
@@ -52,19 +53,11 @@
 
   typedef typename assign_if_was_result< TargetType >::type result_type;
 
-  typedef detail::assign_if_was_acquire_impl
-          < result_type
-          , type
-          >
-          impl_type;
-
-  return mpl::if_< detail::has_nested_type< impl_type >
-                 , impl_type
-                 , detail::assign_if_was_acquire_default_impl
-                     < result_type, type >
-                 >
-                 ::type
-                 ::execute( destination, source, old_value );
+  return detail::assign_if_was_acquire_impl
+         < typename assign_if_was_result< TargetType >::type
+         , type
+         >
+         ::execute( destination, source, old_value );
 }
 
 template< typename TargetType, typename SourceType, typename ConditionType >
@@ -103,4 +96,6 @@
 
 } } }
 
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
 #endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_release.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_release.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_release.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -9,9 +9,6 @@
 #ifndef BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_ASSIGN_IF_WAS_RELEASE_HPP
 #define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_ASSIGN_IF_WAS_RELEASE_HPP
 
-#include <boost/act/interlocked/assign_if_was/detail/assign_if_was_release_impl.hpp>
-#include <boost/act/interlocked/assign_if_was/detail/assign_if_was_release_default_impl.hpp>
-
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/remove_volatile.hpp>
 
@@ -23,8 +20,12 @@
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_decl.hpp>
-#include <boost/act/interlocked/detail/has_nested_type.hpp>
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+( assign_if_was, release )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
 
 namespace boost { namespace act { namespace interlocked {
 
@@ -52,19 +53,11 @@
 
   typedef typename assign_if_was_result< TargetType >::type result_type;
 
-  typedef detail::assign_if_was_release_impl
-          < result_type
-          , type
-          >
-          impl_type;
-
-  return mpl::if_< detail::has_nested_type< impl_type >
-                 , impl_type
-                 , detail::assign_if_was_release_default_impl
-                     < result_type, type >
-                 >
-                 ::type
-                 ::execute( destination, source, old_value );
+  return detail::assign_if_was_release_impl
+         < typename assign_if_was_result< TargetType >::type
+         , type
+         >
+         ::execute( destination, source, old_value );
 }
 
 template< typename TargetType, typename SourceType, typename ConditionType >
@@ -103,4 +96,6 @@
 
 } } }
 
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
 #endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_acquire_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_acquire_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,31 @@
+/*=============================================================================
+    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_ACQDEF_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_DETAIL_ASSIGN_IF_WAS_ACQDEF_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct assign_if_was_acquire_default_impl
+{
+  template< typename LeftType, typename RightType, typename OldType >
+  static ResultType execute( LeftType& left, RightType& right
+                           , OldType& old
+                           )
+  {
+    return interlocked::assign_if_was( left, right, old );
+  }
+};
+
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_acquire_windows.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_acquire_windows.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,110 @@
+/*=============================================================================
+    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_ACQ_VISTA_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_DETAIL_ASSIGN_IF_WAS_ACQ_VISTA_HPP
+
+#include <boost/config.hpp>
+
+#ifndef BOOST_WINDOWS
+#error Windows interlocked assign acquire included on non-Windows OS.
+#else
+
+#include <windows.h>
+
+#if WINVER < 0x0600
+#error Windows interlocked assign acquire included on pre-vista Windows OS.
+#else
+
+#include <boost/utility/enable_if.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct assign_if_was_acquire_impl
+{
+  typedef void type;
+
+  template< typename LeftType, typename RightType, typename OldType >
+  static
+  typename enable_if_c
+  <
+    ( sizeof( LeftType ) == 4 )
+  , ResultType
+  >
+  ::type
+  execute( LeftType& left, RightType& right, OldType& old )
+  {
+    return ResultType
+           (
+             static_cast< UnqualifiedType >
+             (
+               InterlockedCompareExchangeAcquire
+               ( reinterpret_cast< LONG volatile* >( &left )
+               , reinterpret_cast< LONG const& >( right )
+               )
+             )
+           , right
+           , old
+           );
+  }
+
+  template< typename LeftType, typename RightType, typename OldType >
+  static
+  typename enable_if_c
+  <
+    ( sizeof( LeftType ) == 8 )
+  , ResultType
+  >
+  ::type
+  execute( LeftType& left, RightType& right, OldType& old )
+  {
+    return ResultType
+           (
+             static_cast< UnqualifiedType >
+             (
+               InterlockedCompareExchange64Acquire
+               ( reinterpret_cast< LONGLONG volatile* >( &left )
+               , reinterpret_cast< LONGLONG const& >( right )
+               , reinterpret_cast< LONGLONG const& >( old )
+               )
+             )
+           , right
+           , old
+           );
+  }
+
+  template< typename LeftType, typename RightType, typename OldType >
+  static
+  ResultType
+  execute( LeftType*& left, RightType*& right, OldType*& old )
+  {
+    return ResultType
+           (
+             static_cast< UnqualifiedType >
+             (
+               InterlockedCompareExchangePointerAcquire
+               ( const_cast< void* volatile* >
+                 (
+                   reinterpret_cast< void const volatile* volatile* >( &left )
+                 )
+               , const_cast< void* >( right )
+               , const_cast< void* >( old )
+               )
+             )
+           , right
+           , old
+           );
+  }
+};
+
+} } } }
+
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,36 @@
+/*=============================================================================
+    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_IF_WAS_DEFAULT_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_DETAIL_ASSIGN_IF_WAS_DEFAULT_IMPL_HPP
+
+#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 {
+
+template< typename ResultType, typename UnqualifiedType >
+struct assign_if_was_default_impl
+{
+  template< typename LeftType, typename RightType, typename ConditionType >
+  static ResultType execute( LeftType&, RightType&, ConditionType& )
+  {
+    BOOST_MPL_ASSERT_MSG
+    (
+      ( mpl::apply< mpl::always< mpl::false_ >, TargetType >::type::value )
+    , NO_DEFAULT_INTERLOCKED_ASSIGN_IF_WAS_IMPLEMENTATION
+    , ()
+    );
+  }
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_release_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_release_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,31 @@
+/*=============================================================================
+    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_RELDEF_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_DETAIL_ASSIGN_IF_WAS_RELDEF_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct assign_if_was_release_default_impl
+{
+  template< typename LeftType, typename RightType, typename OldType >
+  static ResultType execute( LeftType& left, RightType& right
+                           , OldType& old
+                           )
+  {
+    return interlocked::assign_if_was( left, right, old );
+  }
+};
+
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_release_windows.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_release_windows.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,110 @@
+/*=============================================================================
+    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_REL_VISTA_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_DETAIL_ASSIGN_IF_WAS_REL_VISTA_HPP
+
+#include <boost/config.hpp>
+
+#ifndef BOOST_WINDOWS
+#error Windows interlocked assign acquire included on non-Windows OS.
+#else
+
+#include <windows.h>
+
+#if WINVER < 0x0600
+#error Windows interlocked assign acquire included on pre-vista Windows OS.
+#else
+
+#include <boost/utility/enable_if.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct assign_if_was_release_impl
+{
+  typedef void type;
+
+  template< typename LeftType, typename RightType, typename OldType >
+  static
+  typename enable_if_c
+  <
+    ( sizeof( LeftType ) == 4 )
+  , ResultType
+  >
+  ::type
+  execute( LeftType& left, RightType& right, OldType& old )
+  {
+    return ResultType
+           (
+             static_cast< UnqualifiedType >
+             (
+               InterlockedCompareExchangeRelease
+               ( reinterpret_cast< LONG volatile* >( &left )
+               , reinterpret_cast< LONG const& >( right )
+               )
+             )
+           , right
+           , old
+           );
+  }
+
+  template< typename LeftType, typename RightType, typename OldType >
+  static
+  typename enable_if_c
+  <
+    ( sizeof( LeftType ) == 8 )
+  , ResultType
+  >
+  ::type
+  execute( LeftType& left, RightType& right, OldType& old )
+  {
+    return ResultType
+           (
+             static_cast< UnqualifiedType >
+             (
+               InterlockedCompareExchange64Release
+               ( reinterpret_cast< LONGLONG volatile* >( &left )
+               , reinterpret_cast< LONGLONG const& >( right )
+               , reinterpret_cast< LONGLONG const& >( old )
+               )
+             )
+           , right
+           , old
+           );
+  }
+
+  template< typename LeftType, typename RightType, typename OldType >
+  static
+  ResultType
+  execute( LeftType*& left, RightType*& right, OldType*& old )
+  {
+    return ResultType
+           (
+             static_cast< UnqualifiedType >
+             (
+               InterlockedCompareExchangePointerRelease
+               ( const_cast< void* volatile* >
+                 (
+                   reinterpret_cast< void const volatile* volatile* >( &left )
+                 )
+               , const_cast< void* >( right )
+               , const_cast< void* >( old )
+               )
+             )
+           , right
+           , old
+           );
+  }
+};
+
+} } } }
+
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/binary_bitwise_operation_checker.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/binary_bitwise_operation_checker.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,81 @@
+/*=============================================================================
+    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_TEST_INTERLOCKED_BINARY_BITWISE_OPERATION_CHECKER_HPP
+#define BOOST_ACT_TEST_INTERLOCKED_BINARY_BITWISE_OPERATION_CHECKER_HPP
+
+/*
+Note: The template in this file only checks for proper result functionality.
+      It is not a multithreaded test for checking the application of interlocked
+      operations in a multithreaded environment.
+*/
+
+#include <boost/test/minimal.hpp>
+#include <boost/foreach.hpp>
+#include <boost/act/interlocked/integer/types.hpp>
+
+#include "../random_uint8.hpp"
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/utility/binary.hpp>
+
+uint8_fast_t const binary_values[32] =
+{
+  BOOST_BINARY_U( 11010010 ), BOOST_BINARY_U( 00110110 )
+, BOOST_BINARY_U( 11111111 ), BOOST_BINARY_U( 11010011 )
+, BOOST_BINARY_U( 00000000 ), BOOST_BINARY_U( 10110100 )
+, BOOST_BINARY_U( 01011110 ), BOOST_BINARY_U( 01011100 )
+, BOOST_BINARY_U( 10110111 ), BOOST_BINARY_U( 00110111 )
+, BOOST_BINARY_U( 00111010 ), BOOST_BINARY_U( 10110011 )
+, BOOST_BINARY_U( 01101001 ), BOOST_BINARY_U( 01111010 )
+, BOOST_BINARY_U( 11010110 ), BOOST_BINARY_U( 11110010 )
+, BOOST_BINARY_U( 01011101 ), BOOST_BINARY_U( 11011011 )
+, BOOST_BINARY_U( 01011111 ), BOOST_BINARY_U( 00011111 )
+, BOOST_BINARY_U( 11010001 ), BOOST_BINARY_U( 10110100 )
+, BOOST_BINARY_U( 01011100 ), BOOST_BINARY_U( 01011100 )
+, BOOST_BINARY_U( 01101011 ), BOOST_BINARY_U( 01011101 )
+, BOOST_BINARY_U( 11101011 ), BOOST_BINARY_U( 01101111 )
+, BOOST_BINARY_U( 11110001 ), BOOST_BINARY_U( 10110100 )
+, BOOST_BINARY_U( 10100010 ), BOOST_BINARY_U( 01110110 )
+};
+
+#undef BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP
+
+template< typename ValueType, typename ResultType >
+void check_operation_results( ValueType old_value, ValueType expected_value
+                            , ResultType result
+                            )
+{
+  ValueType const result_old_value = result.old_value(),
+                  result_new_value = result.new_value();
+
+  BOOST_CHECK( result_old_value == old_value );
+  BOOST_CHECK( result_new_value == expected_value );
+}
+
+
+template< typename SingleThreadOperationType, typename OperationType >
+void brute_operation_result_checker( SingleThreadOperationType single_thread_op
+                                   , OperationType operation
+                                   )
+{
+  typedef boost::act::interlocked::uint_least8_t  uint_least8_t;
+
+  uint_least8_t test_var = 0;
+
+  BOOST_FOREACH( uint_least8_t val, random_uint8 )
+  {
+    uint_least8_t const copy = test_var;
+
+    check_operation_results( copy, single_thread_op( copy, val )
+                                 , operation( test_var, val )
+                           );
+  }
+}
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_HPP
+
+#include <boost/act/interlocked/bitand_assign/bitand_assign.hpp>
+#include <boost/act/interlocked/bitand_assign/bitand_assign_acquire.hpp>
+#include <boost/act/interlocked/bitand_assign/bitand_assign_release.hpp>
+#include <boost/act/interlocked/bitand_assign/bitand_assign_result.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_BITAND_ASSIGN_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
+( bitand_assign, full_barrier, not_additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_acquire.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_acquire.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_ACQUIRE_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_BITAND_ASSIGN_ACQUIRE_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
+( bitand_assign, acquire, not_additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_acquire_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_acquire_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_ACQUIRE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_BITAND_ASSIGN_ACQUIRE_FWD_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO                 \
+( bitand_assign, acquire, not_additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_BITAND_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO                 \
+( bitand_assign, full_barrier, not_additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_release.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_release.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_RELEASE_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_BITAND_ASSIGN_RELEASE_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
+( bitand_assign, release, not_additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_release_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_release_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_RELEASE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_BITAND_ASSIGN_RELEASE_FWD_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO                 \
+( bitand_assign, release, not_additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_result.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_result.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,16 @@
+/*=============================================================================
+    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_RESULT_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_BITAND_ASSIGN_RESULT_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO bitand_assign
+
+#include <boost/act/interlocked/detail/binary_result_impl.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_result_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_result_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_RESULT_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_BITAND_ASSIGN_RESULT_FWD_HPP
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType, typename OperandType = TargetType >
+struct bitand_assign_result;
+
+} } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_acquire_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_acquire_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,21 @@
+/*=============================================================================
+    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_ACQUIRE_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_DETAIL_BITAND_ASSIGN_ACQUIRE_DEFAULT_HPP
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#endif
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO                         \
+( bitand_assign, acquire, & )
+
+#include <boost/act/interlocked/detail/binary_default_impl.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,21 @@
+/*=============================================================================
+    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_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_DETAIL_BITAND_ASSIGN_DEFAULT_HPP
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#endif
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO                         \
+( bitand_assign, full_barrier, & )
+
+#include <boost/act/interlocked/detail/binary_default_impl.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_operation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_operation.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_BITANDTRACT_ASSIGN_DETAIL_BITANDTRACT_ASSIGN_OPERATION_HPP
+#define BOOST_ACT_INTERLOCKED_BITANDTRACT_ASSIGN_DETAIL_BITANDTRACT_ASSIGN_OPERATION_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_INFO                     \
+( bitand_assign, &, no_inverse(BOOST_PP_NIL) )
+
+#include <boost/act/interlocked/detail/binary_operation.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_release_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_release_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,21 @@
+/*=============================================================================
+    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_RELEASE_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_DETAIL_BITAND_ASSIGN_RELEASE_DEFAULT_HPP
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#endif
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO                         \
+( bitand_assign, release, & )
+
+#include <boost/act/interlocked/detail/binary_default_impl.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/bitand_assign/bitand_assign_fwd.hpp>
+#include <boost/act/interlocked/bitand_assign/bitand_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/bitand_assign/bitand_assign_release_fwd.hpp>
+#include <boost/act/interlocked/bitand_assign/bitand_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/bitor_assign.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/bitor_assign_acquire.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/bitor_assign_release.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/bitor_assign_result.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/detail/bitor_assign_acquire_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/detail/bitor_assign_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/detail/bitor_assign_operation.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/detail/bitor_assign_release_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/compl_assign.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/compl_assign_acquire.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/compl_assign_release.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/compl_assign_result.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/detail/compl_assign_acquire_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/detail/compl_assign_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/detail/compl_assign_operation.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign/detail/compl_assign_release_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compl_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -6,110 +6,13 @@
     http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DEC_HPP
-#define BOOST_ACT_INTERLOCKED_DECREMENT_DEC_HPP
+#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_HPP
 
-#include <boost/config.hpp>
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
 
-#ifndef BOOST_WINDOWS
-#error Interlocked operations not supported
-#else
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO ( decrement, full_barrier )
 
-#include <boost/act/interlocked/integer/has_interlocked_operations.hpp>
-#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
-
-#include <boost/act/interlocked/assign_if_was/assign_if_was.hpp>
-
-#include <boost/act/detail/is_pointer_to_void.hpp>
-
-#include <boost/detail/interlocked.hpp>
-
-#include <boost/utility/enable_if.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/not.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-#include <boost/type_traits/is_const.hpp>
-
-#include <windows.h> // ToDo: Remove (forward declare functions)
-
-namespace boost { namespace act { namespace interlocked {
-
-template< typename Type >
-typename enable_if
-<
-  mpl::and_< has_interlocked_operations< Type >
-           , is_integral< Type >
-           , mpl::not_< is_same< Type, bool > >
-           , mpl::bool_< ( sizeof( Type ) == 4 ) >
-           , mpl::not_< is_const< Type > >
-           >
-, Type
->
-::type
-decrement( Type volatile& destination )
-{
-  return BOOST_INTERLOCKED_DECREMENT
-         ( &reinterpret_cast< LONG volatile& >( destination ) );
-}
-
-template< typename Type >
-typename enable_if
-<
-  mpl::and_< has_interlocked_operations< Type >
-           , is_pointer< Type >
-           , mpl::not_< act::detail::is_pointer_to_void< Type > >
-           , mpl::not_< is_const< Type > >
-           >
-, Type
->
-::type
-decrement( Type volatile& destination )
-{
-  Type expected_old_value = destination,
-       old_value;
-
-  do
-  {
-    old_value = assign_if_was( destination
-                               , expected_old_value - 1
-                               , expected_old_value
-                               )
-
-    if( old_value == expected_old_value )
-      break;
-    else
-      expected_old_value = old_value;
-  }
-  while( true );
-
-  return old_value;
-}
-
-#if WINVER >= 0x0600
-
-template< typename Type >
-typename enable_if
-<
-  mpl::and_< has_interlocked_operations< Type >
-           , is_integral< Type >
-           , mpl::not_< is_same< Type, bool > >
-           , mpl::bool_< ( sizeof( Type ) == 8 ) >
-           , mpl::not_< is_const< Type > >
-           >
-, Type
->
-::type
-decrement( Type volatile& destination )
-{
-  return InterlockedDecrement64
-         ( &reinterpret_cast< LONGLONG volatile& >( destination ) );
-}
-
-#endif
-
-} } }
-
-#endif
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
 
 #endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acquire.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acquire.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acquire.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -6,143 +6,13 @@
     http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DEC_ACQUIRE_HPP
-#define BOOST_ACT_INTERLOCKED_DECREMENT_DEC_ACQUIRE_HPP
+#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_ACQUIRE_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_ACQUIRE_HPP
 
-#include <boost/config.hpp>
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
 
-#ifdef BOOST_WINDOWS
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO ( decrement, acquire )
 
-// ToDo: Change to a leaner include file
-#include <windows.h>
-
-// ToDo: Cast on interlocked bool
-
-#if WINVER >= 0x0600
-
-#include <boost/act/interlocked/integer/has_interlocked_operations.hpp>
-#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
-#include <boost/act/interlocked/assign_if_was/assign_if_was_acquire.hpp>
-
-#include <boost/act/detail/is_pointer_to_void.hpp>
-
-#include <boost/detail/interlocked.hpp>
-
-#include <boost/utility/enable_if.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/not.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/is_convertible.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-namespace boost { namespace act { namespace interlocked {
-
-template< typename Type >
-typename enable_if
-<
-  mpl::and_< has_interlocked_operations< Type >
-           , is_integral< Type >
-           , mpl::not_< is_same< Type, bool > >
-           , bool_< ( sizeof( Type ) == 4 ) >
-           , mpl::not_< is_const< Type > >
-           >
-, Type
->
-::type
-decrement_acquire( Type volatile& destination )
-{
-  return static_cast< Type >
-         (
-           InterlockedDecrementAcquire
-           ( &reinterpret_cast< LONG volatile& >( destination ) )
-         );
-}
-
-template< typename Type >
-typename enable_if
-<
-  mpl::and_< has_interlocked_operations< Type >
-           , is_integral< Type >
-           , mpl::not_< is_same< Type, bool > >
-           , bool_< ( sizeof( Type ) == 8 ) >
-           , mpl::not_< is_const< Type > >
-           >
-, Type
->
-::type
-decrement_acquire( Type volatile& destination )
-{
-  return static_cast< Type >
-         (
-           InterlockedDecrement64Acquire
-           ( &reinterpret_cast< LONGLONG volatile& >( destination ) )
-         );
-}
-
-template< typename Type >
-typename enable_if
-<
-  mpl::and_< has_interlocked_operations< Type >
-           , is_pointer< Type >
-           , mpl::not_< detail::is_pointer_to_void< Type > >
-           , mpl::not_< is_const< Type > >
-           >
-, Type
->
-::type
-decrement_acquire( Type volatile& destination )
-{
-  Type expected_value;
-
-  do
-  {
-    expected_value = destination;
-  }
-  while(    assign_if_was_acqire( destination
-                                  , expected_value - 1
-                                  , expected_value
-                                  )
-         != expected_value
-       );
-
-  return expected_value;
-}
-
-} } }
-
-#else
-
-#include <boost/act/interlocked/decrement/decrement.hpp>
-#include <boost/act/interlocked/integer/has_interlocked_operations.hpp>
-#include <boost/utility/enable_if.hpp>
-
-namespace boost { namespace act { namespace interlocked {
-
-template< typename Type >
-typename enable_if
-<
-  mpl::and_
-  <
-    has_interlocked_operations< Type >
-  , mpl::not_< is_same< Type, bool > >
-  , mpl::not_< detail::is_interlocked_bool< Type > >
-  , mpl::not_< detail::is_pointer_to_void< Type > >
-  , mpl::not_< is_const< Type > >
-  >
-, Type
->
-::type
-decrement_acquire( Type volatile& destination )
-{
-  return decrement( destination );
-}
-
-} } }
-
-#endif
-
-#endif
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
 
 #endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acquire_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acquire_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+    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_DECREMENT_DECREMENT_ACQUIRE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_ACQUIRE_FWD_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO ( decrement, acquire )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+    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_DECREMENT_DECREMENT_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_FWD_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO ( decrement, full_barrier )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_release.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_release.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_release.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -6,143 +6,14 @@
     http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DEC_RELEASE_HPP
-#define BOOST_ACT_INTERLOCKED_DECREMENT_DEC_RELEASE_HPP
+#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_RELEASE_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_RELEASE_HPP
 
-#include <boost/config.hpp>
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
 
-#ifdef BOOST_WINDOWS
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO ( decrement, release )
 
-// ToDo: Change to a leaner include file
-#include <windows.h>
-
-// ToDo: Cast on interlocked bool
-
-#if WINVER >= 0x0600
-
-#include <boost/act/interlocked/integer/has_interlocked_operations.hpp>
-#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
-#include <boost/act/interlocked/assign_if_was/assign_if_was_release.hpp>
-
-#include <boost/act/detail/is_pointer_to_void.hpp>
-
-#include <boost/detail/interlocked.hpp>
-
-#include <boost/utility/enable_if.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/not.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/is_convertible.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-namespace boost { namespace act { namespace interlocked {
-
-template< typename Type >
-typename enable_if
-<
-  mpl::and_< has_interlocked_operations< Type >
-           , is_integral< Type >
-           , mpl::not_< is_same< Type, bool > >
-           , bool_< ( sizeof( Type ) == 4 ) >
-           , mpl::not_< is_const< Type > >
-           >
-, Type
->
-::type
-decrement_release( Type volatile& destination )
-{
-  return static_cast< Type >
-         (
-           InterlockedDecrementRelease
-           ( &reinterpret_cast< LONG volatile& >( destination ) )
-         );
-}
-
-template< typename Type >
-typename enable_if
-<
-  mpl::and_< has_interlocked_operations< Type >
-           , is_integral< Type >
-           , mpl::not_< is_same< Type, bool > >
-           , bool_< ( sizeof( Type ) == 8 ) >
-           , mpl::not_< is_const< Type > >
-           >
-, Type
->
-::type
-decrement_release( Type volatile& destination )
-{
-  return static_cast< Type >
-         (
-           InterlockedDecrement64Release
-           ( &reinterpret_cast< LONGLONG volatile& >( destination ) )
-         );
-}
-
-template< typename Type >
-typename enable_if
-<
-  mpl::and_< has_interlocked_operations< Type >
-           , is_pointer< Type >
-           , mpl::not_< detail::is_pointer_to_void< Type > >
-           , mpl::not_< is_const< Type > >
-           >
-, Type
->
-::type
-decrement_release( Type volatile& destination )
-{
-  Type expected_value;
-
-  do
-  {
-    expected_value = destination;
-  }
-  while(    assign_if_was_acqire( destination
-                                  , expected_value - 1
-                                  , expected_value
-                                  )
-         != expected_value
-       );
-
-  return expected_value;
-}
-
-} } }
-
-#else
-
-#include <boost/act/interlocked/decrement/decrement.hpp>
-#include <boost/act/interlocked/integer/has_interlocked_operations.hpp>
-#include <boost/utility/enable_if.hpp>
-
-namespace boost { namespace act { namespace interlocked {
-
-template< typename Type >
-typename enable_if
-<
-  mpl::and_
-  <
-    has_interlocked_operations< Type >
-  , mpl::not_< is_same< Type, bool > >
-  , mpl::not_< detail::is_interlocked_bool< Type > >
-  , mpl::not_< act::detail::is_pointer_to_void< Type > >
-  , mpl::not_< is_const< Type > >
-  >
-, Type
->
-::type
-decrement_release( Type volatile& destination )
-{
-  return decrement( destination );
-}
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
 
-} } }
-
-#endif
-
-#endif
 
 #endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_release_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_release_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_RELEASE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_RELEASE_FWD_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO ( decrement, release )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_result.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_result.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_result.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,16 @@
+/*=============================================================================
+    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_DECREMENT_DECREMENT_RESULT_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_RESULT_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO decrement
+
+#include <boost/act/interlocked/detail/unary_result_impl.hpp>
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_result_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_result_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_result_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_DECREMENT_DECREMENT_RESULT_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_RESULT_FWD_HPP
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType >
+struct decrement_result;
+
+} } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_acquire_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_acquire_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,44 @@
+/*=============================================================================
+    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_DECREMENT_DETAIL_DECREMENT_ACQUIRE_DEF_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DETAIL_DECREMENT_ACQUIRE_DEF_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_acquire.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
+#include <boost/act/detail/prior.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct decrement_acquire_default_impl
+{
+  template< typename TargetType >
+  static ResultType execute( TargetType& target )
+  {
+    UnqualifiedType new_value;
+
+    for( UnqualifiedType curr_value = retrieve( target )
+       ;    ( new_value = assign_if_was_acquire( target
+                                               , act::detail::prior( curr_value )
+                                               , curr_value
+                                               )
+                            .old_value()
+            )
+         != curr_value
+       ; curr_value = new_value
+       );
+
+    return new_value;
+  }
+};
+
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,44 @@
+/*=============================================================================
+    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_DECREMENT_DETAIL_DECREMENT_DEFAULT_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DETAIL_DECREMENT_DEFAULT_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
+#include <boost/act/detail/prior.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct decrement_default_impl
+{
+  template< typename TargetType >
+  static ResultType execute( TargetType& target )
+  {
+    UnqualifiedType new_value;
+
+    for( UnqualifiedType curr_value = retrieve( target )
+       ;    ( new_value = assign_if_was( target
+                                       , act::detail::prior( curr_value )
+                                       , curr_value
+                                       )
+                            .old_value()
+            )
+         != curr_value
+       ; curr_value = new_value
+       );
+
+    return new_value;
+  }
+};
+
+
+} } } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_operation.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_operation.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_operation.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_DECREMENT_DETAIL_DECREMENT_OPERATION_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DETAIL_DECREMENT_OPERATION_HPP
+
+#include <boost/act/detail/next.hpp>
+#include <boost/act/detail/prior.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct decrement_operation
+{
+  struct new_from_old
+  {
+    template< typename ValueType >
+    static ValueType execute( ValueType& value )
+    {
+      return act::detail::prior( value );
+    }
+  };
+
+  struct old_from_new
+  {
+    template< typename ValueType >
+    static ValueType execute( ValueType& value )
+    {
+      return act::detail::next( value );
+    }
+  };
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_release_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_release_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,44 @@
+/*=============================================================================
+    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_DECREMENT_DETAIL_DECREMENT_RELEASE_DEF_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DETAIL_DECREMENT_RELEASE_DEF_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_release.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
+#include <boost/act/detail/prior.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct decrement_release_default_impl
+{
+  template< typename TargetType >
+  static ResultType execute( TargetType& target )
+  {
+    UnqualifiedType new_value;
+
+    for( UnqualifiedType curr_value = retrieve( target )
+       ;    ( new_value = assign_if_was_release( target
+                                               , act::detail::prior( curr_value )
+                                               , curr_value
+                                               )
+                            .old_value()
+            )
+         != curr_value
+       ; curr_value = new_value
+       );
+
+    return new_value;
+  }
+};
+
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,16 @@
+/*=============================================================================
+    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_DECREMENT_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_FWD_HPP
+
+#include <boost/act/interlocked/decrement/decrement_fwd.hpp>
+#include <boost/act/interlocked/decrement/decrement_acquire_fwd.hpp>
+#include <boost/act/interlocked/decrement/decrement_release_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_default_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_default_impl.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,145 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/act/interlocked/detail/full_name.hpp>
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_CURR_SHORT_NAME
+#undef BOOST_ACT_INTERLOCKED_DETAIL_CURR_SHORT_NAME
+#endif
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_CURR_SHORT_NAME                           \
+BOOST_PP_TUPLE_ELEM( 3, 0                                                      \
+                   , BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO            \
+                   )
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_CURR_SEMANTIC_ID_IS_FULL_BARRIER          \
+BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_AFFIX_                              \
+            , BOOST_PP_TUPLE_ELEM                                              \
+              ( 3, 1                                                           \
+              , BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO                 \
+              )                                                                \
+            )                                                                  \
+== BOOST_ACT_INTERLOCKED_DETAIL_AFFIX_full_barrier
+
+#if BOOST_ACT_INTERLOCKED_DETAIL_CURR_SEMANTIC_ID_IS_FULL_BARRIER
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_fwd.hpp>
+#include <boost/act/interlocked/retrieve_fwd.hpp>
+
+#else
+
+#define BOOST_ACT_INTERLOCKED_CURR_FWD_HEADER()                                \
+BOOST_PP_CAT                                                                   \
+(                                                                              \
+  BOOST_PP_CAT( BOOST_PP_CAT( <boost/act/interlocked/                          \
+                            , BOOST_ACT_INTERLOCKED_DETAIL_CURR_SHORT_NAME     \
+                            )                                                  \
+              , BOOST_PP_CAT( /                                                \
+                            , BOOST_ACT_INTERLOCKED_DETAIL_CURR_SHORT_NAME     \
+                            )                                                  \
+              )                                                                \
+, _fwd.hpp>                                                                    \
+)
+
+#include BOOST_ACT_INTERLOCKED_CURR_FWD_HEADER()
+
+#undef BOOST_ACT_INTERLOCKED_CURR_FWD_HEADER
+
+#endif
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct BOOST_PP_CAT
+       (
+         BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME
+         ( BOOST_ACT_INTERLOCKED_DETAIL_CURR_SHORT_NAME
+         , BOOST_PP_TUPLE_ELEM( 3, 1
+                              , BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+                              )
+         )
+       , _default_impl
+       )
+{
+  template< typename TargetType, typename OperandType >
+  static ResultType execute( TargetType& target, OperandType& operand )
+  {
+
+#if BOOST_ACT_INTERLOCKED_DETAIL_CURR_SEMANTIC_ID_IS_FULL_BARRIER
+
+    UnqualifiedType new_value;
+
+    for( UnqualifiedType curr_value = retrieve( target )
+       ;    ( new_value = assign_if_was
+                          ( target
+                          , curr_value
+                            BOOST_PP_TUPLE_ELEM
+                            ( 3, 2
+                            , BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+                            )
+                            operand
+                          , curr_value
+                          )
+                            .old_value()
+            )
+         != curr_value
+       ; curr_value = new_value
+       );
+
+    return ResultType( new_value, operand );
+
+#else
+
+    return BOOST_ACT_INTERLOCKED_DETAIL_CURR_SHORT_NAME( target, operand );
+
+#endif
+
+  }
+};
+
+} } } }
+
+#if BOOST_ACT_INTERLOCKED_DETAIL_CURR_SEMANTIC_ID_IS_FULL_BARRIER
+
+#undef BOOST_ACT_INTERLOCKED_DETAIL_CURR_SEMANTIC_ID_IS_FULL_BARRIER
+#undef BOOST_ACT_INTERLOCKED_DETAIL_CURR_SHORT_NAME
+#undef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
+
+#else
+
+#undef BOOST_ACT_INTERLOCKED_DETAIL_CURR_SEMANTIC_ID_IS_FULL_BARRIER
+
+#define BOOST_ACT_INTERLOCKED_CURR_HEADER()                                    \
+BOOST_PP_CAT                                                                   \
+(                                                                              \
+  BOOST_PP_CAT( BOOST_PP_CAT( <boost/act/interlocked/                          \
+                            , BOOST_ACT_INTERLOCKED_DETAIL_CURR_SHORT_NAME     \
+                            )                                                  \
+              , BOOST_PP_CAT( /                                                \
+                            , BOOST_ACT_INTERLOCKED_DETAIL_CURR_SHORT_NAME     \
+                            )                                                  \
+              )                                                                \
+, .hpp>                                                                        \
+)
+
+#include BOOST_ACT_INTERLOCKED_CURR_HEADER()
+
+#undef BOOST_ACT_INTERLOCKED_CURR_HEADER
+
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,28 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_IS_READY_FOR_CLEANUP
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+#undef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_IS_ADDITIVE
+#undef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_IS_READY_FOR_CLEANUP
+#endif
+#endif
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_HPP
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_AFFIX_not_additive 0
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_AFFIX_additive     1
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()                        \
+<boost/act/interlocked/detail/binary_forwarder_dont_include.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder_dont_include.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder_dont_include.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,99 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#include <boost/preprocessor/cat.hpp>
+
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_volatile.hpp>
+
+#include <boost/act/interlocked/detail/cas_support.hpp>
+#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+
+#include <boost/type_traits/remove_volatile.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_IS_ADDITIVE              \
+BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_AFFIX_             \
+            , BOOST_PP_TUPLE_ELEM                                              \
+              ( 3, 2                                                           \
+              , BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO             \
+              )                                                                \
+            )
+
+#include <boost/act/interlocked/detail/forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_INFO                            \
+( BOOST_PP_TUPLE_ELEM( 3, 0                                                    \
+                     , BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO      \
+                     )                                                         \
+, BOOST_PP_TUPLE_ELEM( 3, 1                                                    \
+                     , BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO      \
+                     )                                                         \
+)
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_BEGIN()
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType, typename OperandType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    detail::
+#if BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_IS_ADDITIVE
+    are_valid_additive_params
+#else
+    are_valid_arithmetic_params
+#endif
+    < TargetType, OperandType >
+  , mpl::not_< detail::is_interlocked_bool< TargetType > >
+  >
+, BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SHORT_NAME
+              , _result
+              )
+              < TargetType >
+>
+::type
+BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FULL_NAME( TargetType& target
+                                                , OperandType const& operand
+                                                )
+{
+  typedef typename remove_volatile< TargetType >::type type;
+  typedef typename BOOST_PP_CAT
+                   ( BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SHORT_NAME
+                   , _result
+                   )
+                   < TargetType >
+                   ::type result_type;
+
+  return detail::BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FULL_NAME
+                             , _impl
+                             )
+         < result_type
+         , type
+         >
+         ::execute( target, operand );
+}
+
+} } }
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_IS_READY_FOR_CLEANUP
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_END()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,28 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_IS_READY_FOR_CLEANUP
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+#undef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_IS_ADDITIVE
+#undef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_IS_READY_FOR_CLEANUP
+#endif
+#endif
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_AFFIX_not_additive 0
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_AFFIX_additive     1
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()                    \
+<boost/act/interlocked/detail/binary_forwarder_fwd_dont_include.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder_fwd_dont_include.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder_fwd_dont_include.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_DETAIL_BINARY_FORWARDER_FWD_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#include <boost/preprocessor/cat.hpp>
+
+#include <boost/utility/enable_if.hpp>
+
+#include <boost/act/interlocked/detail/cas_support.hpp>
+#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_IS_ADDITIVE          \
+BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_AFFIX_         \
+            , BOOST_PP_TUPLE_ELEM                                              \
+              ( 3, 2                                                           \
+              , BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO         \
+              )                                                                \
+            )
+
+#include <boost/act/interlocked/detail/forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_INFO                        \
+( BOOST_PP_TUPLE_ELEM( 3, 0                                                    \
+                     , BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO  \
+                     )                                                         \
+, BOOST_PP_TUPLE_ELEM( 3, 1                                                    \
+                     , BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO  \
+                     )                                                         \
+)
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_BEGIN()
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType, typename OperandType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    detail::
+#if BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_IS_ADDITIVE
+    are_valid_additive_params
+#else
+    are_valid_arithmetic_params
+#endif
+    < TargetType, OperandType >
+  , mpl::not_< detail::is_interlocked_bool< TargetType > >
+  >
+, BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_SHORT_NAME
+              , _result
+              )
+              < TargetType >
+>
+::type
+BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_FULL_NAME( TargetType& target
+                                                    , OperandType const& operand
+                                                    );
+
+} } }
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_IS_READY_FOR_CLEANUP
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_END()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_operation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_operation.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,102 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_HPP
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_AFFIX_inverse(dummy)    1
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_AFFIX_no_inverse(dummy) 0
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_OPERATOR_inverse( op ) op
+
+#endif
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OP_NAME                            \
+BOOST_PP_TUPLE_ELEM( 3, 0, BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_INFO )
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OP                                 \
+BOOST_PP_TUPLE_ELEM( 3, 1, BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_INFO )
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OP_HAS_INVERSE                     \
+BOOST_PP_CAT                                                                   \
+( BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_AFFIX_                         \
+, BOOST_PP_TUPLE_ELEM( 3, 2                                                    \
+                     , BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_INFO      \
+                     )                                                         \
+)
+
+#if !BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OP_HAS_INVERSE
+
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/always.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/bool.hpp>
+
+#endif
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OP_NAME
+                   , _operation
+                   )
+{
+  struct new_from_old
+  {
+    template< typename ValueType, typename OperandType >
+    static ValueType execute( ValueType& value, OperandType& operand )
+    {
+      return value BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OP operand;
+    }
+  };
+
+  struct old_from_new
+  {
+    template< typename ValueType, typename OperandType >
+    static ValueType execute( ValueType& value, OperandType& operand )
+    {
+      #if BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OP_HAS_INVERSE
+      return value BOOST_PP_CAT
+                   ( BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_OPERATOR_
+                   , BOOST_PP_TUPLE_ELEM
+                     ( 3, 2
+                     , BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_INFO
+                     )
+                   )
+                   operand;
+      #else
+        BOOST_MPL_ASSERT_MSG( ( mpl::apply< mpl::always< mpl::true_ >
+                                          , ValueType
+                                          >
+                                          ::type::value
+                              )
+                            , NO_INVERSE_FOR_OPERATION
+                            , ()
+                            );
+
+        return ValueType();
+      #endif
+    }
+  };
+};
+
+} } } }
+
+#undef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OP_HAS_INVERSE
+#undef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OP
+#undef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OP_NAME
+
+#undef BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_INFO
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_result_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_result_impl.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,80 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#include <boost/act/interlocked/detail/cas_support.hpp>
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_DATA
+
+#include <boost/act/interlocked/detail/interlocked_result.hpp>
+#include <boost/type_traits/remove_volatile.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_OP_HEADER()                               \
+BOOST_PP_CAT                                                                   \
+(                                                                              \
+  BOOST_PP_CAT( <boost/act/interlocked/                                        \
+              , BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO                       \
+              )                                                                \
+, BOOST_PP_CAT( /detail/                                                       \
+              , BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO         \
+                            , _operation.hpp>                                  \
+                            )                                                  \
+              )                                                                \
+)
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_OP_HEADER()
+
+#undef BOOST_ACT_INTERLOCKED_DETAIL_OP_HEADER
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FWD_HEADER()                              \
+BOOST_PP_CAT                                                                   \
+(                                                                              \
+  BOOST_PP_CAT( <boost/act/interlocked/                                        \
+              , BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO                       \
+              )                                                                \
+, BOOST_PP_CAT( /                                                              \
+              , BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO         \
+                            , _result_fwd.hpp>                                 \
+                            )                                                  \
+              )                                                                \
+)
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_FWD_HEADER()
+
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FWD_HEADER
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType, typename OperandType >
+struct BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO, _result )
+{
+  typedef detail::binary_interlocked_result
+          < detail::BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO
+                                , _operation
+                                )
+          , detail::BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_ARITHMETIC_RETURN
+          , typename remove_volatile< TargetType >::type
+          , OperandType
+          >
+          type;
+};
+
+} } }
+
+#else
+
+#include <boost/act/interlocked/detail/unsupported_result.hpp>
+
+#endif
+
+#undef BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO
+
+#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-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -19,15 +19,174 @@
 #include <boost/preprocessor/seq/for_each.hpp>
 #include <boost/mpl/or.hpp>
 #include <boost/mpl/bool.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/seq/filter.hpp>
+#include <boost/preprocessor/comparison/equal.hpp>
+#include <boost/preprocessor/comparison/not_equal.hpp>
+#include <boost/preprocessor/logical/bitand.hpp>
+#include <boost/preprocessor/logical/bitor.hpp>
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/control/if.hpp>
+#include <boost/preprocessor/seq/seq.hpp>
+#include <boost/preprocessor/seq/fold_left.hpp>
+#include <boost/preprocessor/seq/elem.hpp>
+#include <boost/act/interlocked/detail/full_name.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_NUM_PARAMS 5
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_NAME                          \
+  BOOST_PP_TUPLE_ELEM( BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_NUM_PARAMS     \
+                     , 0, BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_DATA        \
+                     )
+
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_SEQ                           \
-  BOOST_PP_TUPLE_ELEM( 3, 0, BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_DATA )
+  BOOST_PP_TUPLE_ELEM( BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_NUM_PARAMS     \
+                     , 1, BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_DATA        \
+                     )
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_CAS_RETURN                    \
-  BOOST_PP_TUPLE_ELEM( 3, 1, BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_DATA )
+  BOOST_PP_TUPLE_ELEM( BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_NUM_PARAMS     \
+                     , 2, BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_DATA        \
+                     )
 
+// ToDo: Remove this eventually
 #define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_ARITHMETIC_RETURN             \
-  BOOST_PP_TUPLE_ELEM( 3, 2, BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_DATA )
+  old_value
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_RETRIEVE_INFO                 \
+  BOOST_PP_TUPLE_ELEM( BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_NUM_PARAMS     \
+                     , 3, BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_DATA        \
+                     )
+
+#ifndef BOOST_ACT_INTERLOCKED_FORCE_DEFAULTS
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_IMPL_INFO                     \
+  BOOST_PP_TUPLE_ELEM( BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_NUM_PARAMS     \
+                     , 4, BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_DATA        \
+                     )
+
+#else
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_IMPL_INFO                     \
+( ( assign,        ( full_barrier ) ) )                                        \
+( ( assign_if_was, ( full_barrier ) ) )
+
+#endif
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_0               0
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_add_assign      1
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_assign          2
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_assign_if_was   3
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_bitand_assign   4
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_bitor_assign    5
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_compl_assign    6
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_decrement       7
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_divide_assign   8
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_increment       9
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_mod_assign      10
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_multiply_assign 11
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_negate_assign   12
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_not_assign      13
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_retrieve        14
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_subtract_assign 15
+#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_xor_assign      16
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_0            0
+#define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_acquire      1
+#define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_release      2
+#define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_full_barrier 3
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_COMPARE( data, elem )                     \
+BOOST_PP_EQUAL                                                                 \
+(                                                                              \
+  BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_, elem )              \
+, data                                                                         \
+)
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_APPEND_IF_SAME( s, state, value )         \
+BOOST_PP_IF                                                                    \
+(                                                                              \
+  BOOST_ACT_INTERLOCKED_DETAIL_COMPARE( BOOST_PP_SEQ_ELEM( 0, state ), value ) \
+, state (value)                                                                \
+, state                                                                        \
+)
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_SEQ_CONTAINS( s, seq, value )             \
+BOOST_PP_NOT_EQUAL                                                             \
+(                                                                              \
+  BOOST_PP_SEQ_SIZE                                                            \
+  (                                                                            \
+    BOOST_PP_CAT( BOOST_PP_SEQ_FOLD_LEFT_, s )                                 \
+    ( BOOST_ACT_INTERLOCKED_DETAIL_APPEND_IF_SAME                              \
+    , (value)                                                                  \
+    , seq                                                                      \
+    )                                                                          \
+  )                                                                            \
+, 1                                                                            \
+)
+
+// ToDo: Change to lazily evaluate 2nd and argument
+#define BOOST_ACT_INTERLOCKED_DETAIL_IS_SAME_IMPL_OR_TERM( s, data, elem )     \
+BOOST_PP_BITAND                                                                \
+(                                                                              \
+  BOOST_PP_BITOR                                                               \
+  (                                                                            \
+    BOOST_PP_EQUAL                                                             \
+    (                                                                          \
+      BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_                  \
+                  , BOOST_PP_TUPLE_ELEM( 2, 0, elem )                          \
+                  )                                                            \
+    , BOOST_PP_TUPLE_ELEM( 2, 0, data )                                        \
+    )                                                                          \
+  , BOOST_PP_EQUAL                                                             \
+    (                                                                          \
+      BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_                  \
+                  , BOOST_PP_TUPLE_ELEM( 2, 0, elem )                          \
+                  )                                                            \
+    , 0                                                                        \
+    )                                                                          \
+  )                                                                            \
+, BOOST_ACT_INTERLOCKED_DETAIL_SEQ_CONTAINS                                    \
+  ( s, BOOST_PP_TUPLE_ELEM( 2, 1, elem )                                       \
+     , BOOST_PP_TUPLE_ELEM( 2, 1, data )                                       \
+  )                                                                            \
+)
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( name, semantics )        \
+BOOST_PP_EQUAL                                                                 \
+( BOOST_PP_SEQ_SIZE                                                            \
+  ( BOOST_PP_SEQ_FILTER                                                        \
+    ( BOOST_ACT_INTERLOCKED_DETAIL_IS_SAME_IMPL_OR_TERM                        \
+    , ( BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_, name )        \
+      , BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_, semantics )   \
+      )                                                                        \
+    , BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_IMPL_INFO                       \
+      ((0,(acquire)(release)(full_barrier)))                                   \
+    )                                                                          \
+  )                                                                            \
+, 2                                                                            \
+)
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_custom_retrieve 0
+#define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_volatile_retrieve 1
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_HAS_VOLATILE_RETRIEVE                     \
+BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_                        \
+            , BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_RETRIEVE_INFO           \
+            )
+/*
+#define BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_HEADER()                      \
+BOOST_PP_IF                                                                    \
+(                                                                              \
+  BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL                                 \
+  ( BOOST_PP_TUPLE_ELEM( 2, 0, BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_INFO ) \
+  , BOOST_PP_TUPLE_ELEM( 2, 1, BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_INFO ) \
+  )                                                                            \
+, <boost/act/interlocked/detail/custom_impl.hpp>                               \
+, <boost/act/interlocked/detail/default_impl.hpp>                              \
+)
+*/
 
 namespace boost { namespace act { namespace interlocked { namespace detail {
 
@@ -35,7 +194,12 @@
 are_valid_arithmeticn_params< ( elem / CHAR_BIT )                              \
                             , LeftOperand, RightOperand, ComparisonType        \
                             >,
+#define BOOST_ACT_INTERLOCKED_DETAIL_ADDITIVE_PARAMS_BASE_MACRO(r,data,elem)   \
+are_valid_additiven_params< ( elem / CHAR_BIT )                                \
+                            , LeftOperand, RightOperand                        \
+                            >,
 
+// ToDo: remove_volatile for RightOperand and ComparisonType
 template< typename LeftOperand, typename RightOperand = LeftOperand const
         , typename ComparisonType = LeftOperand const
         >
@@ -52,6 +216,22 @@
 {
 };
 
+// ToDo: remove_volatile for RightOperand
+template< typename LeftOperand, typename RightOperand = LeftOperand const >
+struct are_valid_additive_params
+  : mpl::or_
+    <
+      BOOST_PP_SEQ_FOR_EACH
+      ( BOOST_ACT_INTERLOCKED_DETAIL_ADDITIVE_PARAMS_BASE_MACRO
+      , ~
+      , BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_SEQ
+      )
+      mpl::true_
+    >
+{
+};
+
+// ToDo: remove_volatile for RightOperand and ComparisonType
 template< typename LeftOperand, typename RightOperand = LeftOperand const
         , typename ComparisonType = LeftOperand const
         >
@@ -67,7 +247,7 @@
                                    >
             > {};
 
-
+#undef BOOST_ACT_INTERLOCKED_DETAIL_ADDITIVE_PARAMS_BASE_MACRO
 #undef BOOST_ACT_INTERLOCKED_DETAIL_ARITHMETIC_PARAMS_BASE_MACRO
 
 } } } }
@@ -82,7 +262,7 @@
 
 namespace boost { namespace act { namespace interlocked { namespace detail {
 
-template< typename LeftOperand, typename RightOperand
+template< typename LeftOperand, typename RightOperand = LeftOperand
         , typename ComparisonType = LeftOperand
         >
 struct are_valid_arithmetic_params
@@ -96,7 +276,7 @@
   );
 };
 
-template< typename LeftOperand, typename RightOperand
+template< typename LeftOperand, typename RightOperand = LeftOperand
         , typename ComparisonType = LeftOperand
         >
 struct are_valid_assign_style_params
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support_data.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support_data.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support_data.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -11,17 +11,36 @@
 
 // Note: BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT has the form
 //
-// ( pp_seq_of_valid_bit_amounts_for_cas, cas_return, arithmetic_return )
+// ( name, valid_bit_count_for_cas, cas_return, retrieve_info
+// , custom_implementations
+// )
+//
+// Where valid_bit_count_for_cas is a Boost.Preprocessor sequence of object
+//   sizes in bits which may be used with the underlying cas operation
 //
 // Where cas_return is either:
 //   old_value, meaning the old value is returned from assign_if_was_impl
 //                    -or-
 //   success_value, meaning it returns true if the operation was successful
 //
-// Where arithmetic_return is either:
-//   old_value, meaning the old value is returned from arithmetic impls
+// Where retrieve_info is either:
+//   volatile_retrieve, meaning interlocked::retrieve is automatically
+//     implemented to access the passed object with added volatile qualification
+//                    -or-
+//   custom_retrieve, meaning interlocked::retrieve does not have a default
+//     implementation and must be provided by the implementor
+//
+// Where custom_implementations is a preprocessor sequence of tuples of the form
+//   ( function_name, semantice_sequence )
+//     Where function_name is the name of a function with a custom implmentation
+//
+//     Where semantic_sequence is a sequence whose elements are each one of:
+//       acquire, meanining there is an implementation for acquire semantics
 //                    -or-
-//   new_value, meaning the new value is returned from arithmetic impls
+//       release, meanining there is an one for release semantics
+//                    -or-
+//       full_barrier, meanining there is one for full barrier semantics
+//
 
 #include <boost/config.hpp>
 
@@ -29,15 +48,25 @@
 
   #include <windows.h>
 
+  // ToDo: Only use volatile_retrieve if VC 8.0 or higher
+
   #if WINVER < 0x0600 // Windows prior to vista
 
+    // Note: Same name as vista windows on purpose
     #define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_DATA                      \
-              ( (32),old_value,new_value )
+              ( windows,(32),old_value,volatile_retrieve                       \
+              , ( ( assign,        ( full_barrier ) ) )                        \
+                ( ( assign_if_was, ( full_barrier ) ) )                        \
+              )
 
   #else // Windows Vista and higher
 
+    // Note: Same name as pre-vista windows on purpose
     #define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_DATA                      \
-              ( (32)(64),old_value,new_value )
+              ( windows,(32)(64),old_value,volatile_retrieve                   \
+              , ( ( assign,        ( full_barrier )( acquire ) ) )             \
+                ( ( assign_if_was, ( full_barrier )( acquire )( release ) ) )  \
+              )
 
   #endif // End WINVER checks
 
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/custom_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/custom_impl.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,66 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/act/interlocked/detail/full_name.hpp>
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_HEADER_RAW
+#undef BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_HEADER_RAW
+#endif
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_HEADER_RAW()                  \
+BOOST_PP_CAT                                                                   \
+(                                                                              \
+  BOOST_PP_CAT                                                                 \
+  (                                                                            \
+    BOOST_PP_CAT                                                               \
+    ( <boost/act/interlocked/                                                  \
+    , BOOST_PP_TUPLE_ELEM( 2, 0                                                \
+                         , BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_INFO       \
+                         )                                                     \
+    )                                                                          \
+  , /detail/                                                                   \
+  )                                                                            \
+, BOOST_PP_CAT                                                                 \
+  (                                                                            \
+    BOOST_PP_CAT                                                               \
+    (                                                                          \
+      BOOST_PP_CAT                                                             \
+      (                                                                        \
+        BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME                                 \
+        ( BOOST_PP_TUPLE_ELEM( 2, 0                                            \
+                             , BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_INFO   \
+                             )                                                 \
+        , BOOST_PP_TUPLE_ELEM( 2, 1                                            \
+                             , BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_INFO   \
+                             )                                                 \
+        )                                                                      \
+      , _                                                                      \
+      )                                                                        \
+    , BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_NAME                            \
+    )                                                                          \
+  , .hpp>                                                                      \
+  )                                                                            \
+)
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_HEADER_RAW()
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_HEADER_RAW
+#undef BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_HEADER_RAW
+#endif
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_INFO
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/default_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/default_impl.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,31 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/act/interlocked/detail/full_name.hpp>
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_HEADER_RAW
+#undef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_HEADER_RAW
+#endif
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_HEADER_RAW()
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_HEADER_RAW
+#undef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_HEADER_RAW
+#endif
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_CUSTOM_IMPL_INFO
+#endif
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/default_unary_impl.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/default_unary_impl.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/default_unary_impl.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -36,7 +36,7 @@
 
 // ToDo: Fix to account for acquire/release
 #include <boost/act/interlocked/assign_if_was/assign.hpp>
-#include <boost/act/interlocked/safe_get.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
 
 namespace boost { namespace act { namespace interlocked { namespace detail {
 
@@ -46,7 +46,7 @@
   template< typename TargetType >
   static ResultType execute( TargetType& target )
   {
-    for( UnqualifiedType curr_value = safe_get( target ),
+    for( UnqualifiedType curr_value = retrieve( target ),
                          new_value  = curr_value
        ; curr_value = assign_if_was( target, ++new_value, curr_value )
        ; new_value = curr_value
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_INFO
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_IS_READY_FOR_CLEANUP
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_OP_RESULT_HEADER
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_OP_HEADER_OPENER
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SEMANTICS
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SHORT_NAME
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FULL_NAME
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_IS_READY_FOR_CLEANUP
+#endif
+#endif
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_HPP
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_BEGIN()                         \
+<boost/act/interlocked/detail/forwarder_begin_dont_include.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_END()                           \
+<boost/act/interlocked/detail/forwarder_end_dont_include.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_begin_dont_include.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_begin_dont_include.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,65 @@
+/*=============================================================================
+    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: If you are getting an error in this file, please post to the mailing list
+
+*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/act/interlocked/detail/cas_support.hpp>
+#include <boost/act/interlocked/detail/full_name.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SHORT_NAME                      \
+BOOST_PP_TUPLE_ELEM( 2, 0, BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_INFO )
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SEMANTICS                       \
+BOOST_PP_TUPLE_ELEM( 2, 1, BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_INFO )
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FULL_NAME                       \
+BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME                                         \
+( BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SHORT_NAME                            \
+, BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SEMANTICS                             \
+)
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_OP_HEADER_OPENER()              \
+BOOST_PP_CAT                                                                   \
+(                                                                              \
+  BOOST_PP_CAT( <boost/act/interlocked/                                        \
+              , BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SHORT_NAME              \
+              )                                                                \
+, /                                                                            \
+)
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_OP_RESULT_HEADER()              \
+BOOST_PP_CAT                                                                   \
+(                                                                              \
+  BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_OP_HEADER_OPENER()                    \
+, BOOST_PP_CAT                                                                 \
+  (                                                                            \
+   BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SHORT_NAME                           \
+  , _result.hpp>                                                               \
+  )                                                                            \
+)
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_OP_RESULT_HEADER()
+
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_INFO
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_end_dont_include.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_end_dont_include.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_IS_READY_FOR_CLEANUP
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_INFO
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_IS_READY_FOR_CLEANUP
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_OP_RESULT_HEADER
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_OP_HEADER_OPENER
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_SEMANTICS
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_SHORT_NAME
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_FULL_NAME
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_IS_READY_FOR_CLEANUP
+#endif
+#endif
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_BEGIN()                     \
+<boost/act/interlocked/detail/forwarder_fwd_begin_dont_include.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_END()                       \
+<boost/act/interlocked/detail/forwarder_fwd_end_dont_include.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_fwd_begin_dont_include.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_fwd_begin_dont_include.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,51 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/act/interlocked/detail/full_name.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_SHORT_NAME                  \
+BOOST_PP_TUPLE_ELEM( 2, 0, BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_INFO )
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_SEMANTICS                   \
+BOOST_PP_TUPLE_ELEM( 2, 1, BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_INFO )
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_FULL_NAME                   \
+BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME                                         \
+( BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_SHORT_NAME                        \
+, BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_SEMANTICS                         \
+)
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_OP_HEADER_OPENER()          \
+BOOST_PP_CAT                                                                   \
+(                                                                              \
+  BOOST_PP_CAT( <boost/act/interlocked/                                        \
+              , BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_SHORT_NAME          \
+              )                                                                \
+, /                                                                            \
+)
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_OP_RESULT_HEADER()          \
+BOOST_PP_CAT                                                                   \
+(                                                                              \
+  BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_OP_HEADER_OPENER()                \
+, BOOST_PP_CAT                                                                 \
+  (                                                                            \
+   BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_SHORT_NAME                       \
+  , _result_fwd.hpp>                                                           \
+  )                                                                            \
+)
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_OP_RESULT_HEADER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_fwd_end_dont_include.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/forwarder_fwd_end_dont_include.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,15 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_IS_READY_FOR_CLEANUP
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/full_name.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/full_name.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,34 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME_HPP
+#define BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME_HPP
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/control/if.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_AFFIX_full_barrier 0
+#define BOOST_ACT_INTERLOCKED_DETAIL_AFFIX_acquire      1
+#define BOOST_ACT_INTERLOCKED_DETAIL_AFFIX_release      2
+#define BOOST_ACT_INTERLOCKED_DETAIL_AFFIX_dummy        0
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME( name, semantics )              \
+BOOST_PP_IF( BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_AFFIX_                 \
+                         , semantics                                           \
+                         )                                                     \
+           , BOOST_PP_CAT                                                      \
+             (                                                                 \
+               name                                                            \
+             , BOOST_PP_CAT( _                                                 \
+                           , semantics                                         \
+                           )                                                   \
+             )                                                                 \
+           , name                                                              \
+           )
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,33 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+// ToDo: Do fancy dance to undef old macros
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_IMPL_IS_READY_FOR_CLEANUP
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+#undef BOOST_ACT_INTERLOCKED_DETAIL_IMPL_HEADER_RAW
+#undef BOOST_ACT_INTERLOCKED_DETAIL_IMPL_SHORT_NAME
+#undef BOOST_ACT_INTERLOCKED_DETAIL_IMPL_SEMANTICS
+#undef BOOST_ACT_INTERLOCKED_DETAIL_IMPL_FULL_NAME
+#undef BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_IMPL_IS_READY_FOR_CLEANUP
+#endif
+#endif
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()                              \
+<boost/act/interlocked/detail/impl_begin_dont_include.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()                                \
+<boost/act/interlocked/detail/impl_end_dont_include.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_begin_dont_include.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_begin_dont_include.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,42 @@
+/*=============================================================================
+    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: If you are getting an error in this file, please post to the mailing list
+
+*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_SHORT_NAME                           \
+BOOST_PP_TUPLE_ELEM( 2, 0, BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO )
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_SEMANTICS                            \
+BOOST_PP_TUPLE_ELEM( 2, 1, BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO )
+
+#include <boost/act/interlocked/detail/full_name.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_FULL_NAME                            \
+BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME                                         \
+( BOOST_ACT_INTERLOCKED_DETAIL_IMPL_SHORT_NAME                                 \
+, BOOST_ACT_INTERLOCKED_DETAIL_IMPL_SEMANTICS                                  \
+)
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_IMPL_FULL_NAME, _impl );
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_end_dont_include.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_end_dont_include.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,106 @@
+/*=============================================================================
+    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: If you are getting an error in this file, please post to the mailing list
+
+*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#include <boost/act/interlocked/detail/cas_support.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_IS_READY_FOR_CLEANUP
+
+// ToDo: Make this 80 characters max (push to macro invocation)
+#if BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( BOOST_ACT_INTERLOCKED_DETAIL_IMPL_SHORT_NAME, BOOST_ACT_INTERLOCKED_DETAIL_IMPL_SEMANTICS )
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_HEADER_RAW()                         \
+BOOST_PP_CAT                                                                   \
+(                                                                              \
+  BOOST_PP_CAT                                                                 \
+  (                                                                            \
+    BOOST_PP_CAT                                                               \
+    ( <boost/act/interlocked/                                                  \
+    , BOOST_ACT_INTERLOCKED_DETAIL_IMPL_SHORT_NAME                             \
+    )                                                                          \
+  , /detail/                                                                   \
+  )                                                                            \
+, BOOST_PP_CAT                                                                 \
+  (                                                                            \
+    BOOST_PP_CAT                                                               \
+    (                                                                          \
+      BOOST_PP_CAT                                                             \
+      (                                                                        \
+        BOOST_ACT_INTERLOCKED_DETAIL_IMPL_FULL_NAME                            \
+      , _                                                                      \
+      )                                                                        \
+    , BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_NAME                            \
+    )                                                                          \
+  , .hpp>                                                                      \
+  )                                                                            \
+)
+
+#else
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct BOOST_PP_CAT
+       ( BOOST_ACT_INTERLOCKED_DETAIL_IMPL_FULL_NAME
+       , _default_impl
+       );
+
+template< typename ResultType, typename UnqualifiedType >
+struct BOOST_PP_CAT
+       ( BOOST_ACT_INTERLOCKED_DETAIL_IMPL_FULL_NAME
+       , _impl
+       )
+  : BOOST_PP_CAT
+    ( BOOST_ACT_INTERLOCKED_DETAIL_IMPL_FULL_NAME
+    , _default_impl
+    )
+    < ResultType, UnqualifiedType > {};
+
+} } } }
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_HEADER_RAW()                         \
+BOOST_PP_CAT                                                                   \
+(                                                                              \
+  BOOST_PP_CAT                                                                 \
+  (                                                                            \
+    BOOST_PP_CAT                                                               \
+    ( <boost/act/interlocked/                                                  \
+    , BOOST_ACT_INTERLOCKED_DETAIL_IMPL_SHORT_NAME                             \
+    )                                                                          \
+  , /detail/                                                                   \
+  )                                                                            \
+, BOOST_PP_CAT                                                                 \
+  (                                                                            \
+    BOOST_PP_CAT                                                               \
+    (                                                                          \
+      BOOST_PP_CAT                                                             \
+      (                                                                        \
+        BOOST_ACT_INTERLOCKED_DETAIL_IMPL_FULL_NAME                            \
+      , _                                                                      \
+      )                                                                        \
+    , default                                                                  \
+    )                                                                          \
+  , .hpp>                                                                      \
+  )                                                                            \
+)
+
+#endif
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_HEADER_RAW()
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/interlocked_operand_validators.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/interlocked_operand_validators.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/interlocked_operand_validators.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -36,6 +36,7 @@
 #include <boost/type_traits/is_integral.hpp>
 
 #include <boost/act/detail/is_nonfunction_pointer.hpp>
+#include <cstddef>
 
 namespace boost { namespace act { namespace interlocked { namespace detail {
 
@@ -55,33 +56,21 @@
     , is_convertible< ComparisonType const, TargetType >
     > {};
 
-template< typename TargetType, typename SourceType
-        , typename ComparisonType = TargetType
-        >
-struct are_valid_arithmetic8_params
-  : are_valid_arithmeticn_params< 1, TargetType, SourceType, ComparisonType >
-      {};
-
-template< typename TargetType, typename SourceType
-        , typename ComparisonType = TargetType
-        >
-struct are_valid_arithmetic16_params
-  : are_valid_arithmeticn_params< 2, TargetType, SourceType, ComparisonType >
-      {};
-
-template< typename TargetType, typename SourceType
-        , typename ComparisonType = TargetType
-        >
-struct are_valid_arithmetic32_params
-  : are_valid_arithmeticn_params< 4, TargetType, SourceType, ComparisonType >
-      {};
-
-template< typename TargetType, typename SourceType
-        , typename ComparisonType = TargetType
+template< unsigned NumBytes
+        , typename TargetType, typename SourceType
         >
-struct are_valid_arithmetic64_params
-  : are_valid_arithmeticn_params< 8, TargetType, SourceType, ComparisonType >
-      {};
+struct are_valid_additiven_params
+  : mpl::or_
+    <
+      are_valid_arithmeticn_params< NumBytes, TargetType, SourceType >
+    , mpl::and_
+      <
+        act::detail::is_nonfunction_pointer< TargetType >
+      , mpl::bool_< ( sizeof( TargetType ) == NumBytes ) >
+      , mpl::not_< is_const< TargetType > >
+      , is_convertible< SourceType const, std::ptrdiff_t >
+      >
+    > {};
 
 template< typename TargetType, typename SourceType
         , typename ComparisonType = TargetType
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -6,156 +6,19 @@
     http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_INFO
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_IS_READY_FOR_CLEANUP
 #error Improper incusion of interlocked implementation header. Contact Boost.
 #else
+#undef BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_IS_READY_FOR_CLEANUP
+#endif
+#endif
 
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/control/if.hpp>
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_SHORT_NAME                                \
-BOOST_PP_TUPLE_ELEM( 2, 0, BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_INFO )
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTICS                                 \
-BOOST_PP_TUPLE_ELEM( 2, 1, BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_INFO )
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_AFFIX_full_barrier 0
-#define BOOST_ACT_INTERLOCKED_DETAIL_AFFIX_acquire      1
-#define BOOST_ACT_INTERLOCKED_DETAIL_AFFIX_release      2
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME                                 \
-BOOST_PP_IF( BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_AFFIX_                 \
-                         , BOOST_ACT_INTERLOCKED_DETAIL_SEMANTICS              \
-                         )                                                     \
-           , BOOST_PP_CAT                                                      \
-             (                                                                 \
-               BOOST_ACT_INTERLOCKED_DETAIL_SHORT_NAME                         \
-             , BOOST_PP_CAT( _                                                 \
-                           , BOOST_ACT_INTERLOCKED_DETAIL_SEMANTICS            \
-                           )                                                   \
-             )                                                                 \
-           , BOOST_ACT_INTERLOCKED_DETAIL_SHORT_NAME                           \
-           )
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_OP_HEADER_OPENER()                        \
-BOOST_PP_CAT                                                                   \
-(                                                                              \
-  BOOST_PP_CAT( <boost/act/interlocked/                                        \
-              , BOOST_ACT_INTERLOCKED_DETAIL_SHORT_NAME                        \
-              )                                                                \
-, /                                                                            \
-)
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_OP_RESULT_HEADER()                        \
-BOOST_PP_CAT                                                                   \
-(                                                                              \
-  BOOST_ACT_INTERLOCKED_DETAIL_OP_HEADER_OPENER()                              \
-, BOOST_PP_CAT                                                                 \
-  (                                                                            \
-   BOOST_ACT_INTERLOCKED_DETAIL_SHORT_NAME                                     \
-  , _result.hpp>                                                               \
-  )                                                                            \
-)
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_OP_DETAIL_HEADER_OPENER()                 \
-BOOST_PP_CAT                                                                   \
-(                                                                              \
-  BOOST_ACT_INTERLOCKED_DETAIL_OP_HEADER_OPENER()                              \
-, BOOST_PP_CAT                                                                 \
-  (                                                                            \
-    detail/                                                                    \
-  , BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME                                     \
-  )                                                                            \
-)
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_OP_IMPL_HEADER()                          \
-BOOST_PP_CAT                                                                   \
-(                                                                              \
-  BOOST_ACT_INTERLOCKED_DETAIL_OP_DETAIL_HEADER_OPENER()                       \
-, _impl.hpp>                                                                   \
-)
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_OP_DEFAULT_IMPL_HEADER()                  \
-BOOST_PP_CAT                                                                   \
-(                                                                              \
-  BOOST_ACT_INTERLOCKED_DETAIL_OP_DETAIL_HEADER_OPENER()                       \
-, _default_impl.hpp>                                                           \
-)
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO                               \
-BOOST_ACT_INTERLOCKED_DETAIL_SHORT_NAME
-
-#include BOOST_ACT_INTERLOCKED_DETAIL_OP_RESULT_HEADER()
-#include BOOST_ACT_INTERLOCKED_DETAIL_OP_IMPL_HEADER()
-#include BOOST_ACT_INTERLOCKED_DETAIL_OP_DEFAULT_IMPL_HEADER()
-
-#undef BOOST_ACT_INTERLOCKED_DETAIL_OP_DEFAULT_IMPL_HEADER
-#undef BOOST_ACT_INTERLOCKED_DETAIL_OP_IMPL_HEADER
-#undef BOOST_ACT_INTERLOCKED_DETAIL_OP_DETAIL_HEADER_OPENER
-#undef BOOST_ACT_INTERLOCKED_DETAIL_OP_RESULT_HEADER
-#undef BOOST_ACT_INTERLOCKED_DETAIL_OP_HEADER_OPENER
-
-#include <boost/utility/enable_if.hpp>
-#include <boost/type_traits/remove_volatile.hpp>
-
-#include <boost/act/interlocked/detail/cas_support.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_decl.hpp>
-#include <boost/act/interlocked/detail/has_nested_type.hpp>
-#include <boost/type_traits/remove_volatile.hpp>
-
-namespace boost { namespace act { namespace interlocked {
-
-template< typename TargetType >
-typename lazy_enable_if
-<
-  mpl::and_
-  <
-    detail::are_valid_assign_style_params< TargetType >
-  , mpl::not_< detail::is_interlocked_bool< TargetType > >
-  >
-, BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_SHORT_NAME
-              , _result
-              )
-              < TargetType >
->
-::type
-BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME( TargetType& target )
-{
-  typedef typename remove_volatile< TargetType >::type type;
-  typedef typename BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_SHORT_NAME
-                               , _result
-                               )
-                               < TargetType >
-                               ::type result_type;
-
-  typedef detail::BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME
-                               , _impl
-                               )
-          < result_type
-          , type
-          >
-          impl_type;
-
-  return mpl::if_< detail::has_nested_type< impl_type >
-                 , impl_type
-                 , detail::BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_FULL_NAME
-                                       , _default_impl
-                                       )
-                                       < result_type, type >
-                 >
-                 ::type
-                 ::execute( target );
-}
-
-} } }
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_HPP
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_HPP
 
-#undef BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_INFO
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()                         \
+<boost/act/interlocked/detail/unary_forwarder_dont_include.hpp>
 
 #endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_dont_include.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_dont_include.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,75 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#include <boost/preprocessor/cat.hpp>
+
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_volatile.hpp>
+
+#include <boost/act/interlocked/detail/cas_support.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/type_traits/remove_volatile.hpp>
+
+#include <boost/act/interlocked/detail/forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_INFO                            \
+BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_BEGIN()
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    detail::are_valid_assign_style_params< TargetType >
+  , mpl::not_< detail::is_interlocked_bool< TargetType > >
+  >
+, BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SHORT_NAME
+              , _result
+              )
+              < TargetType >
+>
+::type
+BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FULL_NAME( TargetType& target )
+{
+  typedef typename remove_volatile< TargetType >::type type;
+  typedef typename BOOST_PP_CAT
+                   ( BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SHORT_NAME
+                   , _result
+                   )
+                   < TargetType >
+                   ::type result_type;
+
+  return detail::BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FULL_NAME
+                             , _impl
+                             )
+         < result_type
+         , type
+         >
+         ::execute( target );
+}
+
+} } }
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_IS_READY_FOR_CLEANUP
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_END()
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -6,98 +6,19 @@
     http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef BOOST_ACT_INTERLOCKED_DETAIL_OP_NAME
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_IS_READY_FOR_CLEANUP
 #error Improper incusion of interlocked implementation header. Contact Boost.
 #else
+#undef BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_IS_READY_FOR_CLEANUP
+#endif
+#endif
 
-#include <boost/preprocessor/cat.hpp>
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_OP_HEADER_OPENER()                        \
-BOOST_PP_CAT                                                                   \
-(                                                                              \
-  BOOST_PP_CAT( <boost/act/interlocked/                                        \
-              , BOOST_ACT_INTERLOCKED_DETAIL_OP_NAME                           \
-              )                                                                \
-, /                                                                            \
-)
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_OP_RESULT_HEADER()                        \
-BOOST_PP_CAT                                                                   \
-(                                                                              \
-  BOOST_ACT_INTERLOCKED_DETAIL_OP_HEADER_OPENER()                              \
-, BOOST_PP_CAT                                                                 \
-  (                                                                            \
-   BOOST_ACT_INTERLOCKED_DETAIL_OP_NAME                                        \
-  , _result.hpp>                                                               \
-  )                                                                            \
-)
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_OP_DETAIL_HEADER_OPENER()                 \
-BOOST_PP_CAT                                                                   \
-(                                                                              \
-  BOOST_ACT_INTERLOCKED_DETAIL_OP_HEADER_OPENER()                              \
-, BOOST_PP_CAT                                                                 \
-  (                                                                            \
-    detail/                                                                    \
-  , BOOST_ACT_INTERLOCKED_DETAIL_OP_NAME                                       \
-  )                                                                            \
-)
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_OP_IMPL_HEADER()                          \
-BOOST_PP_CAT                                                                   \
-(                                                                              \
-  BOOST_ACT_INTERLOCKED_DETAIL_OP_DETAIL_HEADER_OPENER()                       \
-, _impl.hpp>                                                                   \
-)
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_OP_DEFAULT_IMPL_HEADER()                  \
-BOOST_PP_CAT                                                                   \
-(                                                                              \
-  BOOST_ACT_INTERLOCKED_DETAIL_OP_DETAIL_HEADER_OPENER()                       \
-, _default_impl.hpp>                                                           \
-)
-
-
-#include BOOST_ACT_INTERLOCKED_DETAIL_OP_RESULT_HEADER()
-#include BOOST_ACT_INTERLOCKED_DETAIL_OP_IMPL_HEADER()
-#include BOOST_ACT_INTERLOCKED_DETAIL_OP_DEFAULT_IMPL_HEADER()
-
-#undef BOOST_ACT_INTERLOCKED_DETAIL_OP_DEFAULT_IMPL_HEADER
-#undef BOOST_ACT_INTERLOCKED_DETAIL_OP_IMPL_HEADER
-#undef BOOST_ACT_INTERLOCKED_DETAIL_OP_DETAIL_HEADER_OPENER
-#undef BOOST_ACT_INTERLOCKED_DETAIL_OP_RESULT_HEADER
-#undef BOOST_ACT_INTERLOCKED_DETAIL_OP_HEADER_OPENER
-
-#include <boost/utility/enable_if.hpp>
-
-#include <boost/act/interlocked/detail/cas_support.hpp>
-#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
-
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/not.hpp>
-
-#include <boost/act/interlocked/detail/impl_decl.hpp>
-
-namespace boost { namespace act { namespace interlocked {
-
-template< typename TargetType >
-typename lazy_enable_if
-<
-  mpl::and_
-  <
-    detail::are_valid_assign_style_params< TargetType >
-  , mpl::not_< detail::is_interlocked_bool< TargetType > >
-  >
-, BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_OP_NAME
-              , _result
-              )
-              < TargetType >
->
-::type
-BOOST_ACT_INTERLOCKED_DETAIL_OP_NAME( TargetType& target );
-
-} } }
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_HPP
 
-#undef BOOST_ACT_INTERLOCKED_DETAIL_OP_NAME
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()                     \
+<boost/act/interlocked/detail/unary_forwarder_fwd_dont_include.hpp>
 
 #endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_fwd_dont_include.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_fwd_dont_include.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,54 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO
+#error Improper incusion of interlocked implementation header. Contact Boost.
+#else
+
+#include <boost/preprocessor/cat.hpp>
+
+#include <boost/utility/enable_if.hpp>
+
+#include <boost/act/interlocked/detail/cas_support.hpp>
+#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+
+#include <boost/act/interlocked/detail/forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_INFO                        \
+BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_BEGIN()
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    detail::are_valid_assign_style_params< TargetType >
+  , mpl::not_< detail::is_interlocked_bool< TargetType > >
+  >
+, BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_SHORT_NAME
+              , _result
+              )
+              < TargetType >
+>
+::type
+BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_FULL_NAME( TargetType& target );
+
+} } }
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_IS_READY_FOR_CLEANUP
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_END()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/detail/divide_assign_acquire_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/detail/divide_assign_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/detail/divide_assign_operation.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/detail/divide_assign_release_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/divide_assign.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/divide_assign_acquire.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/divide_assign_release.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign/divide_assign_result.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_acquire_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_acquire_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,44 @@
+/*=============================================================================
+    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_INCREMENT_DETAIL_INCREMENT_ACQUIRE_DEF_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_DETAIL_INCREMENT_ACQUIRE_DEF_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_acquire.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
+#include <boost/act/detail/prior.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct increment_acquire_default_impl
+{
+  template< typename TargetType >
+  static ResultType execute( TargetType& target )
+  {
+    UnqualifiedType new_value;
+
+    for( UnqualifiedType curr_value = retrieve( target )
+       ;    ( new_value = assign_if_was_acquire( target
+                                               , act::detail::next( curr_value )
+                                               , curr_value
+                                               )
+                            .old_value()
+            )
+         != curr_value
+       ; curr_value = new_value
+       );
+
+    return new_value;
+  }
+};
+
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,44 @@
+/*=============================================================================
+    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_INCREMENT_DETAIL_INCREMENT_DEFAULT_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_DETAIL_INCREMENT_DEFAULT_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
+#include <boost/act/detail/prior.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct increment_default_impl
+{
+  template< typename TargetType >
+  static ResultType execute( TargetType& target )
+  {
+    UnqualifiedType new_value;
+
+    for( UnqualifiedType curr_value = retrieve( target )
+       ;    ( new_value = assign_if_was( target
+                                       , act::detail::next( curr_value )
+                                       , curr_value
+                                       )
+                            .old_value()
+            )
+         != curr_value
+       ; curr_value = new_value
+       );
+
+    return new_value;
+  }
+};
+
+
+} } } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_operation.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_operation.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_operation.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -9,6 +9,9 @@
 #ifndef BOOST_ACT_INTERLOCKED_INCREMENT_DETAIL_INCREMENT_OPERATION_HPP
 #define BOOST_ACT_INTERLOCKED_INCREMENT_DETAIL_INCREMENT_OPERATION_HPP
 
+#include <boost/act/detail/next.hpp>
+#include <boost/act/detail/prior.hpp>
+
 namespace boost { namespace act { namespace interlocked { namespace detail {
 
 struct increment_operation
@@ -18,9 +21,7 @@
     template< typename ValueType >
     static ValueType execute( ValueType& value )
     {
-      ValueType copy = value;
-
-      return ++copy;
+      return act::detail::next( value );
     }
   };
 
@@ -29,9 +30,7 @@
     template< typename ValueType >
     static ValueType execute( ValueType& value )
     {
-      ValueType copy = value;
-
-      return --copy;
+      return act::detail::prior( value );
     }
   };
 };
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_release_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_release_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,44 @@
+/*=============================================================================
+    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_INCREMENT_DETAIL_INCREMENT_RELEASE_DEF_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_DETAIL_INCREMENT_RELEASE_DEF_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_release.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
+#include <boost/act/detail/prior.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct increment_release_default_impl
+{
+  template< typename TargetType >
+  static ResultType execute( TargetType& target )
+  {
+    UnqualifiedType new_value;
+
+    for( UnqualifiedType curr_value = retrieve( target )
+       ;    ( new_value = assign_if_was_release( target
+                                               , act::detail::next( curr_value )
+                                               , curr_value
+                                               )
+                            .old_value()
+            )
+         != curr_value
+       ; curr_value = new_value
+       );
+
+    return new_value;
+  }
+};
+
+
+} } } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -9,8 +9,10 @@
 #ifndef BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_HPP
 #define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_HPP
 
-#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_INFO ( increment, full_barrier )
-
 #include <boost/act/interlocked/detail/unary_forwarder.hpp>
 
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO ( increment, full_barrier )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
+
 #endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acquire.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acquire.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acquire.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -9,8 +9,11 @@
 #ifndef BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_ACQUIRE_HPP
 #define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_ACQUIRE_HPP
 
-#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_INFO ( increment, acquire )
-
 #include <boost/act/interlocked/detail/unary_forwarder.hpp>
 
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO ( increment, acquire )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
+
+
 #endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acquire_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acquire_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+    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_INCREMENT_INCREMENT_ACQUIRE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_ACQUIRE_FWD_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO ( increment, acquire )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+    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_INCREMENT_INCREMENT_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_FWD_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO ( increment, full_barrier )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_release.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_release.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_release.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -9,8 +9,10 @@
 #ifndef BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_RELEASE_HPP
 #define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_RELEASE_HPP
 
-#define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_INFO ( increment, release )
-
 #include <boost/act/interlocked/detail/unary_forwarder.hpp>
 
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO ( increment, release )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
+
 #endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_release_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_release_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+    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_INCREMENT_INCREMENT_RELEASE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_RELEASE_FWD_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO ( increment, release )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_result.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_result.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_result.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -9,10 +9,8 @@
 #ifndef BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_RESULT_HPP
 #define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_RESULT_HPP
 
-#include <boost/act/interlocked/detail/result_impl.hpp>
+#define BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO increment
 
-#define BOOST_ACT_INTERLOCKED_DETAIL_OP_NAME increment
-
-#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_RESULT_IMPL()
+#include <boost/act/interlocked/detail/unary_result_impl.hpp>
 
 #endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,16 @@
+/*=============================================================================
+    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_INCREMENT_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_FWD_HPP
+
+#include <boost/act/interlocked/increment/increment_fwd.hpp>
+#include <boost/act/interlocked/increment/increment_acquire_fwd.hpp>
+#include <boost/act/interlocked/increment/increment_release_fwd.hpp>
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/integer/selection.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/integer/selection.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/integer/selection.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -123,14 +123,14 @@
 template< long MaxValue >
 struct int_max_value_t 
 {
-  typedef typename boost::int_max_value_t< Bits >::least least;
+  typedef typename boost::int_max_value_t< MaxValue >::least least;
   typedef typename int_fast_t< least >::fast fast;
 };
 
 template< long MinValue >
 struct int_min_value_t 
 {
-  typedef typename boost::int_min_value_t< Bits >::least least;
+  typedef typename boost::int_min_value_t< MinValue >::least least;
   typedef typename int_fast_t< least >::fast fast;
 };
 
@@ -138,7 +138,7 @@
 template< unsigned long Value >
 struct uint_value_t 
 {
-  typedef typename boost::uint_value_t< Bits >::least least;
+  typedef typename boost::uint_value_t< Value >::least least;
   typedef typename int_fast_t< least >::fast fast;
 };
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/integer/types.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/integer/types.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/integer/types.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -15,8 +15,11 @@
 
 #include <boost/config.hpp>
 
+// ToDo: Add in toggles for 64-bit
+
 #ifdef BOOST_WINDOWS
 
+#include <windows.h>
 #include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
 #include <cstddef>
 
@@ -30,6 +33,14 @@
 typedef unsigned long uint_fast16_t;
 typedef unsigned long uint_fast32_t;
 
+typedef long short_t;
+typedef long int_t;
+typedef long long_t;
+
+typedef unsigned long ushort_t;
+typedef unsigned long uint_t;
+typedef unsigned long ulong_t;
+
 typedef ::std::size_t    size_t;
 typedef ::std::ptrdiff_t ptrdiff_t;
 
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/detail/mod_assign_acquire_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/detail/mod_assign_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/detail/mod_assign_operation.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/detail/mod_assign_release_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/mod_assign.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/mod_assign_acquire.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/mod_assign_release.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign/mod_assign_result.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/mod_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/detail/multiply_assign_acquire_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/detail/multiply_assign_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/detail/multiply_assign_operation.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/detail/multiply_assign_release_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/multiply_assign.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/multiply_assign_acquire.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/multiply_assign_release.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign/multiply_assign_result.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/multiply_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/detail/negate_assign_acquire_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/detail/negate_assign_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/detail/negate_assign_operation.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/detail/negate_assign_release_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/negate_assign.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/negate_assign_acquire.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/negate_assign_release.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign/negate_assign_result.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/negate_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/retrieve.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/retrieve.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,66 @@
+/*=============================================================================
+    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_RETRIEVE_HPP
+#define BOOST_ACT_INTERLOCKED_RETRIEVE_HPP
+
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_volatile.hpp>
+
+#include <boost/act/interlocked/detail/cas_support.hpp>
+
+#if BOOST_ACT_INTERLOCKED_DETAIL_HAS_VOLATILE_RETRIEVE
+
+#include <boost/act/interlocked/retrieve/detail/retrieve_default.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename ResultType, typename UnqualifiedType >
+struct retrieve_impl : retrieve_default_impl< ResultType, UnqualifiedType > {};
+
+} } } }
+
+#else
+
+#include <boost/preprocessor/cat.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_RETRIEVE_CUSTOM_IMPL_HEADER()             \
+BOOST_PP_CAT                                                                   \
+(                                                                              \
+  BOOST_PP_CAT( <boost/act/interlocked/retrieve/detail/retrieve_               \
+              , BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_NAME                  \
+              )                                                                \
+, .hpp>                                                                        \
+)
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_RETRIEVE_CUSTOM_IMPL_HEADER()
+
+#undef BOOST_ACT_INTERLOCKED_DETAIL_RETRIEVE_CUSTOM_IMPL_HEADER
+
+#endif
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType >
+typename lazy_enable_if
+<
+  detail::are_valid_assign_style_params< TargetType >
+, remove_volatile< TargetType >
+>
+::type
+retrieve( TargetType const& target )
+{
+  typedef typename remove_volatile< TargetType >::type unqualified_type;
+
+  return detail::retrieve_impl< unqualified_type, unqualified_type >
+           ::execute( target );
+}
+
+} } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/retrieve_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/retrieve_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,28 @@
+/*=============================================================================
+    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_RETRIEVE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_RETRIEVE_FWD_HPP
+
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_volatile.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType >
+typename lazy_enable_if
+<
+  detail::are_valid_assign_style_params< TargetType >
+, remove_volatile< TargetType >
+>
+::type
+retrieve( TargetType const& target );
+
+} } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_acquire_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_acquire_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,21 @@
+/*=============================================================================
+    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_ACQUIRE_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_SUB_ASSIGN_DETAIL_SUB_ASSIGN_ACQUIRE_DEFAULT_HPP
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#endif
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO                         \
+( subtract_assign, acquire, - )
+
+#include <boost/act/interlocked/detail/binary_default_impl.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,21 @@
+/*=============================================================================
+    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_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_SUB_ASSIGN_DETAIL_SUB_ASSIGN_DEFAULT_HPP
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#endif
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO                         \
+( subtract_assign, full_barrier, - )
+
+#include <boost/act/interlocked/detail/binary_default_impl.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_operation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_operation.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_DETAIL_SUBTRACT_ASSIGN_OPERATION_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_DETAIL_SUBTRACT_ASSIGN_OPERATION_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_OPERATION_INFO                     \
+( subtract_assign, -, inverse(+) )
+
+#include <boost/act/interlocked/detail/binary_operation.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_release_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_release_default.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,21 @@
+/*=============================================================================
+    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_RELEASE_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_SUB_ASSIGN_DETAIL_SUB_ASSIGN_RELEASE_DEFAULT_HPP
+
+#ifdef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#undef BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO
+#endif
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_DEFAULT_IMPL_INFO                         \
+( subtract_assign, release, - )
+
+#include <boost/act/interlocked/detail/binary_default_impl.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
+( subtract_assign, full_barrier, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_acquire.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_acquire.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_ACQUIRE_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_ACQUIRE_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
+( subtract_assign, acquire, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_ACQUIRE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_ACQUIRE_FWD_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO                 \
+( subtract_assign, acquire, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO                 \
+( subtract_assign, full_barrier, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_release.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_release.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_RELEASE_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_RELEASE_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
+( subtract_assign, release, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_RELEASE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_RELEASE_FWD_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO                 \
+( subtract_assign, release, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_result.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_result.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,16 @@
+/*=============================================================================
+    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_RESULT_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_RESULT_HPP
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_RESULT_INFO subtract_assign
+
+#include <boost/act/interlocked/detail/binary_result_impl.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_RESULT_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_RESULT_FWD_HPP
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType, typename OperandType = TargetType >
+struct subtract_assign_result;
+
+} } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/detail/xor_assign_acquire_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/detail/xor_assign_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/detail/xor_assign_operation.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/detail/xor_assign_release_default.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/xor_assign.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/xor_assign_acquire.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/xor_assign_release.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign/xor_assign_result.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/xor_assign_fwd.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+
+#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+
+#endif
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-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -11,5 +11,7 @@
 
 #include <boost/act/interlocked/assign_fwd.hpp>
 #include <boost/act/interlocked/assign_if_was_fwd.hpp>
+#include <boost/act/interlocked/increment_fwd.hpp>
+#include <boost/act/interlocked/decrement_fwd.hpp>
 
 #endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/queue_policy/bounded_queue_policy/safe_single_push_pop_queue.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/queue_policy/bounded_queue_policy/safe_single_push_pop_queue.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/queue_policy/bounded_queue_policy/safe_single_push_pop_queue.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -21,7 +21,7 @@
 #include <boost/act/interlocked/increment/increment_release.hpp>
 #include <boost/act/interlocked/decrement/decrement_release.hpp>
 #include <boost/act/interlocked/integer/types.hpp>
-#include <boost/act/interlocked/safe_get.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
 
 #include <cstddef>
 #include <new>
@@ -79,8 +79,8 @@
     , curr_size_m( 0 ) {}
 public:
   ~bounded_safe_single_push_pop_queue() { clear(); }
-private:
-  void clear()
+public:
+  void clear() // ToDo: Remove
   {
     for( size_type curr_size = size(); curr_size > 0; --curr_size )
       pop();
@@ -90,7 +90,7 @@
   {
     // Safe get insures an added volatile qualifier and that the type can safely
     // be read in whole when another thread is writing to it.
-    return static_cast< size_type >( interlocked::safe_get( curr_size_m ) );
+    return static_cast< size_type >( interlocked::retrieve( curr_size_m ) );
   }
 
   bool empty() const { return size() == 0; }
Added: sandbox/SOC/2006/concurrency/trunk/boost/utility/binary.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/utility/binary.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,714 @@
+#ifndef BOOST_UTILITY_BINARY_HPP
+#define BOOST_UTILITY_BINARY_HPP
+
+//  (C) Copyright Matthew Calabrese 2005
+//
+//  Distributed under the Boost Software License, Version 1.0.
+//  (See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#include <boost/preprocessor/control/deduce_d.hpp>
+#include <boost/preprocessor/facilities/identity.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/seq/cat.hpp>
+#include <boost/preprocessor/seq/transform.hpp>
+#include <boost/preprocessor/arithmetic/mod.hpp>
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+#include <boost/preprocessor/control/while.hpp>
+
+#define BOOST_DETAIL_BITS_PER_OCTIT 3
+
+#define BOOST_BINARY( bit_groupings )                                          \
+  BOOST_BINARY_LITERAL_D                                                       \
+  (                                                                            \
+    BOOST_PP_DEDUCE_D()                                                        \
+  , bit_groupings                                                              \
+  ) 
+
+#define BOOST_BINARY_U( bit_groupings )                                        \
+  BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, U ) 
+
+#define BOOST_BINARY_L( bit_groupings )                                        \
+  BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, L ) 
+
+#define BOOST_BINARY_UL( bit_groupings )                                       \
+  BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, UL ) 
+
+#define BOOST_BINARY_LU( bit_groupings )                                       \
+  BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, LU ) 
+
+#define BOOST_BINARY_LL( bit_groupings )                                       \
+  BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, LL ) 
+
+#define BOOST_BINARY_ULL( bit_groupings )                                      \
+  BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, ULL ) 
+
+#define BOOST_BINARY_LLU( bit_groupings )                                      \
+  BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, LLU ) 
+
+#define BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, suffix )                 \
+  BOOST_SUFFIXED_BINARY_LITERAL_D                                              \
+  (                                                                            \
+    BOOST_PP_DEDUCE_D()                                                        \
+  , bit_groupings                                                              \
+  , suffix                                                                     \
+  ) 
+
+#define BOOST_SUFFIXED_BINARY_LITERAL_D( d, bit_groupings, suffix )            \
+  BOOST_PP_CAT( BOOST_BINARY_LITERAL_D( d, bit_groupings ), suffix ) 
+
+#define BOOST_BINARY_LITERAL_D( d, bit_groupings )                             \
+  BOOST_PP_SEQ_CAT                                                             \
+  (                                                                            \
+    (0) BOOST_DETAIL_CREATE_BINARY_LITERAL_OCTAL_SEQUENCE( d, bit_groupings )  \
+  ) 
+
+#define BOOST_DETAIL_CREATE_BINARY_LITERAL_OCTAL_SEQUENCE( d, bit_groupings )  \
+  BOOST_PP_SEQ_TRANSFORM                                                       \
+  (                                                                            \
+    BOOST_DETAIL_TRIPLE_TO_OCTAL_OPERATION                                     \
+  , BOOST_PP_NIL                                                               \
+  , BOOST_PP_IDENTITY( BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_TRIPLE_SEQUENCE )()\
+    (                                                                          \
+      BOOST_DETAIL_COMPLETE_TRIPLE_SEQUENCE                                    \
+      (                                                                        \
+        d                                                                      \
+      , BOOST_DETAIL_CREATE_BINARY_LITERAL_BIT_SEQUENCE( d, bit_groupings )    \
+      )                                                                        \
+    )                                                                          \
+  ) 
+
+#define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_TRIPLE_SEQUENCE( bit_sequence )   \
+  BOOST_PP_CAT                                                                 \
+  (                                                                            \
+    BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_1 bit_sequence      \
+  , END_BIT                                                                    \
+  ) 
+
+#define BOOST_DETAIL_COMPLETE_TRIPLE_SEQUENCE( d, incomplete_nibble_sequence ) \
+  BOOST_PP_CAT                                                                 \
+  (                                                                            \
+    BOOST_DETAIL_CREATE_TRIPLE_COMPLETION_SEQUENCE_                            \
+  , BOOST_PP_MOD_D( d                                                          \
+                  , BOOST_PP_SEQ_SIZE( incomplete_nibble_sequence )            \
+                  , BOOST_DETAIL_BITS_PER_OCTIT                                \
+                  )                                                            \
+  )                                                                            \
+  incomplete_nibble_sequence 
+
+/* Begin workaround */
+
+#define BOOST_DETAIL_FIXED_COMPL( bit )                                        \
+  BOOST_PP_CAT( BOOST_DETAIL_FIXED_COMPL_, bit )
+
+#define BOOST_DETAIL_FIXED_COMPL_0 1 
+
+#define BOOST_DETAIL_FIXED_COMPL_1 0 
+
+/* End workaround */
+
+#define BOOST_DETAIL_CREATE_BINARY_LITERAL_BIT_SEQUENCE( d, bit_groupings )    \
+  BOOST_PP_EMPTY                                                               \
+  BOOST_PP_CAT( BOOST_PP_WHILE_, d )                                           \
+  (                                                                            \
+    BOOST_DETAIL_BINARY_LITERAL_PREDICATE                                      \
+  , BOOST_DETAIL_BINARY_LITERAL_OPERATION                                      \
+  , bit_groupings ()                                                           \
+  ) 
+
+#define BOOST_DETAIL_BINARY_LITERAL_PREDICATE( d, state )                      \
+  BOOST_DETAIL_FIXED_COMPL( BOOST_DETAIL_IS_NULLARY_ARGS( state ) ) 
+
+#define BOOST_DETAIL_BINARY_LITERAL_OPERATION( d, state )                      \
+  BOOST_DETAIL_SPLIT_AND_SWAP                                                  \
+  (                                                                            \
+    BOOST_PP_CAT( BOOST_DETAIL_BINARY_LITERAL_ELEMENT_, state )                \
+  ) 
+
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_OPERATION( s, dummy_param, tuple )        \
+  BOOST_DETAIL_TERNARY_TRIPLE_TO_OCTAL tuple 
+
+#define BOOST_DETAIL_TERNARY_TRIPLE_TO_OCTAL( bit2, bit1, bit0 )               \
+  BOOST_DETAIL_TRIPLE_TO_OCTAL_ ## bit2 ## bit1 ## bit0 
+
+#define BOOST_DETAIL_CREATE_TRIPLE_COMPLETION_SEQUENCE_1 (0)(0)
+#define BOOST_DETAIL_CREATE_TRIPLE_COMPLETION_SEQUENCE_2 (0)
+#define BOOST_DETAIL_CREATE_TRIPLE_COMPLETION_SEQUENCE_0  
+
+#define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_1END_BIT  
+
+#define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_1( bit )        \
+  ( ( bit, BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_2 
+
+#define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_2( bit )        \
+  bit, BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_3 
+
+#define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_3( bit )        \
+  bit ) ) BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_1 
+
+#define BOOST_DETAIL_SPLIT_AND_SWAP( params )                                  \
+  BOOST_PP_IDENTITY( BOOST_DETAIL_SPLIT_AND_SWAP_PARAMS )()( params )
+
+#define BOOST_DETAIL_SPLIT_AND_SWAP_PARAMS( first_param, second_param )        \
+  second_param first_param 
+
+#define BOOST_DETAIL_LEFT_OF_COMMA( params )                                   \
+  BOOST_PP_IDENTITY( BOOST_DETAIL_FIRST_MACRO_PARAM )()( params ) 
+
+#define BOOST_DETAIL_FIRST_MACRO_PARAM( first_param, second_param )            \
+  first_param 
+
+/* Begin derived concepts from Chaos by Paul Mensonides */
+
+#define BOOST_DETAIL_IS_NULLARY_ARGS( param )                                  \
+  BOOST_DETAIL_LEFT_OF_COMMA                                                   \
+  (                                                                            \
+    BOOST_PP_CAT( BOOST_DETAIL_IS_NULLARY_ARGS_R_                              \
+                , BOOST_DETAIL_IS_NULLARY_ARGS_C param                         \
+                )                                                              \
+  ) 
+
+#define BOOST_DETAIL_IS_NULLARY_ARGS_C()                                       \
+  1 
+
+#define BOOST_DETAIL_IS_NULLARY_ARGS_R_1                                       \
+  1, BOOST_PP_NIL 
+
+#define BOOST_DETAIL_IS_NULLARY_ARGS_R_BOOST_DETAIL_IS_NULLARY_ARGS_C          \
+  0, BOOST_PP_NIL 
+
+/* End derived concepts from Chaos by Paul Mensonides */
+
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_000 0 
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_001 1 
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_010 2 
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_011 3 
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_100 4 
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_101 5 
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_110 6 
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_111 7 
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0 (0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1 (1), 
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00 (0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01 (0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10 (1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11 (1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00 (0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01 (0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10 (1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11 (1)(1), 
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000 (0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001 (0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010 (0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011 (0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100 (1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101 (1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110 (1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111 (1)(1)(1), 
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000 (0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001 (0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010 (0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011 (0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100 (0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101 (0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110 (0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111 (0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000 (1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001 (1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010 (1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011 (1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100 (1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101 (1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110 (1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111 (1)(1)(1)(1), 
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000 (0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001 (0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010 (0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011 (0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100 (0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101 (0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110 (0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111 (0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000 (0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001 (0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010 (0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011 (0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100 (0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101 (0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110 (0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111 (0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000 (1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001 (1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010 (1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011 (1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100 (1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101 (1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110 (1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111 (1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000 (1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001 (1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010 (1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011 (1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100 (1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101 (1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110 (1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111 (1)(1)(1)(1)(1), 
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000000 (0)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000001 (0)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000010 (0)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000011 (0)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000100 (0)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000101 (0)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000110 (0)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000111 (0)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001000 (0)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001001 (0)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001010 (0)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001011 (0)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001100 (0)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001101 (0)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001110 (0)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001111 (0)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010000 (0)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010001 (0)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010010 (0)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010011 (0)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010100 (0)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010101 (0)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010110 (0)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010111 (0)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011000 (0)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011001 (0)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011010 (0)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011011 (0)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011100 (0)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011101 (0)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011110 (0)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011111 (0)(1)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100000 (1)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100001 (1)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100010 (1)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100011 (1)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100100 (1)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100101 (1)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100110 (1)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100111 (1)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101000 (1)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101001 (1)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101010 (1)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101011 (1)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101100 (1)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101101 (1)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101110 (1)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101111 (1)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110000 (1)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110001 (1)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110010 (1)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110011 (1)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110100 (1)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110101 (1)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110110 (1)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110111 (1)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111000 (1)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111001 (1)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111010 (1)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111011 (1)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111100 (1)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111101 (1)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111110 (1)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111111 (1)(1)(1)(1)(1)(1), 
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000000 (0)(0)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000001 (0)(0)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000010 (0)(0)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000011 (0)(0)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000100 (0)(0)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000101 (0)(0)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000110 (0)(0)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000111 (0)(0)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001000 (0)(0)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001001 (0)(0)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001010 (0)(0)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001011 (0)(0)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001100 (0)(0)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001101 (0)(0)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001110 (0)(0)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001111 (0)(0)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010000 (0)(0)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010001 (0)(0)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010010 (0)(0)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010011 (0)(0)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010100 (0)(0)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010101 (0)(0)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010110 (0)(0)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010111 (0)(0)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011000 (0)(0)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011001 (0)(0)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011010 (0)(0)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011011 (0)(0)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011100 (0)(0)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011101 (0)(0)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011110 (0)(0)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011111 (0)(0)(1)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100000 (0)(1)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100001 (0)(1)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100010 (0)(1)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100011 (0)(1)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100100 (0)(1)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100101 (0)(1)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100110 (0)(1)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100111 (0)(1)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101000 (0)(1)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101001 (0)(1)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101010 (0)(1)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101011 (0)(1)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101100 (0)(1)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101101 (0)(1)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101110 (0)(1)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101111 (0)(1)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110000 (0)(1)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110001 (0)(1)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110010 (0)(1)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110011 (0)(1)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110100 (0)(1)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110101 (0)(1)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110110 (0)(1)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110111 (0)(1)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111000 (0)(1)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111001 (0)(1)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111010 (0)(1)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111011 (0)(1)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111100 (0)(1)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111101 (0)(1)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111110 (0)(1)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111111 (0)(1)(1)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000000 (1)(0)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000001 (1)(0)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000010 (1)(0)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000011 (1)(0)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000100 (1)(0)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000101 (1)(0)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000110 (1)(0)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000111 (1)(0)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001000 (1)(0)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001001 (1)(0)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001010 (1)(0)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001011 (1)(0)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001100 (1)(0)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001101 (1)(0)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001110 (1)(0)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001111 (1)(0)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010000 (1)(0)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010001 (1)(0)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010010 (1)(0)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010011 (1)(0)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010100 (1)(0)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010101 (1)(0)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010110 (1)(0)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010111 (1)(0)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011000 (1)(0)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011001 (1)(0)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011010 (1)(0)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011011 (1)(0)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011100 (1)(0)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011101 (1)(0)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011110 (1)(0)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011111 (1)(0)(1)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100000 (1)(1)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100001 (1)(1)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100010 (1)(1)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100011 (1)(1)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100100 (1)(1)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100101 (1)(1)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100110 (1)(1)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100111 (1)(1)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101000 (1)(1)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101001 (1)(1)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101010 (1)(1)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101011 (1)(1)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101100 (1)(1)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101101 (1)(1)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101110 (1)(1)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101111 (1)(1)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110000 (1)(1)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110001 (1)(1)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110010 (1)(1)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110011 (1)(1)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110100 (1)(1)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110101 (1)(1)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110110 (1)(1)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110111 (1)(1)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111000 (1)(1)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111001 (1)(1)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111010 (1)(1)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111011 (1)(1)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111100 (1)(1)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111101 (1)(1)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111110 (1)(1)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111111 (1)(1)(1)(1)(1)(1)(1), 
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000000 (0)(0)(0)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000001 (0)(0)(0)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000010 (0)(0)(0)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000011 (0)(0)(0)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000100 (0)(0)(0)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000101 (0)(0)(0)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000110 (0)(0)(0)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000111 (0)(0)(0)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001000 (0)(0)(0)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001001 (0)(0)(0)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001010 (0)(0)(0)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001011 (0)(0)(0)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001100 (0)(0)(0)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001101 (0)(0)(0)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001110 (0)(0)(0)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001111 (0)(0)(0)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010000 (0)(0)(0)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010001 (0)(0)(0)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010010 (0)(0)(0)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010011 (0)(0)(0)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010100 (0)(0)(0)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010101 (0)(0)(0)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010110 (0)(0)(0)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010111 (0)(0)(0)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011000 (0)(0)(0)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011001 (0)(0)(0)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011010 (0)(0)(0)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011011 (0)(0)(0)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011100 (0)(0)(0)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011101 (0)(0)(0)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011110 (0)(0)(0)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011111 (0)(0)(0)(1)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100000 (0)(0)(1)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100001 (0)(0)(1)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100010 (0)(0)(1)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100011 (0)(0)(1)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100100 (0)(0)(1)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100101 (0)(0)(1)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100110 (0)(0)(1)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100111 (0)(0)(1)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101000 (0)(0)(1)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101001 (0)(0)(1)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101010 (0)(0)(1)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101011 (0)(0)(1)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101100 (0)(0)(1)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101101 (0)(0)(1)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101110 (0)(0)(1)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101111 (0)(0)(1)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110000 (0)(0)(1)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110001 (0)(0)(1)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110010 (0)(0)(1)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110011 (0)(0)(1)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110100 (0)(0)(1)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110101 (0)(0)(1)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110110 (0)(0)(1)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110111 (0)(0)(1)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111000 (0)(0)(1)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111001 (0)(0)(1)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111010 (0)(0)(1)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111011 (0)(0)(1)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111100 (0)(0)(1)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111101 (0)(0)(1)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111110 (0)(0)(1)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111111 (0)(0)(1)(1)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000000 (0)(1)(0)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000001 (0)(1)(0)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000010 (0)(1)(0)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000011 (0)(1)(0)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000100 (0)(1)(0)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000101 (0)(1)(0)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000110 (0)(1)(0)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000111 (0)(1)(0)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001000 (0)(1)(0)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001001 (0)(1)(0)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001010 (0)(1)(0)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001011 (0)(1)(0)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001100 (0)(1)(0)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001101 (0)(1)(0)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001110 (0)(1)(0)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001111 (0)(1)(0)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010000 (0)(1)(0)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010001 (0)(1)(0)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010010 (0)(1)(0)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010011 (0)(1)(0)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010100 (0)(1)(0)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010101 (0)(1)(0)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010110 (0)(1)(0)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010111 (0)(1)(0)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011000 (0)(1)(0)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011001 (0)(1)(0)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011010 (0)(1)(0)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011011 (0)(1)(0)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011100 (0)(1)(0)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011101 (0)(1)(0)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011110 (0)(1)(0)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011111 (0)(1)(0)(1)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100000 (0)(1)(1)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100001 (0)(1)(1)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100010 (0)(1)(1)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100011 (0)(1)(1)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100100 (0)(1)(1)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100101 (0)(1)(1)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100110 (0)(1)(1)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100111 (0)(1)(1)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101000 (0)(1)(1)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101001 (0)(1)(1)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101010 (0)(1)(1)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101011 (0)(1)(1)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101100 (0)(1)(1)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101101 (0)(1)(1)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101110 (0)(1)(1)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101111 (0)(1)(1)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110000 (0)(1)(1)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110001 (0)(1)(1)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110010 (0)(1)(1)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110011 (0)(1)(1)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110100 (0)(1)(1)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110101 (0)(1)(1)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110110 (0)(1)(1)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110111 (0)(1)(1)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111000 (0)(1)(1)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111001 (0)(1)(1)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111010 (0)(1)(1)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111011 (0)(1)(1)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111100 (0)(1)(1)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111101 (0)(1)(1)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111110 (0)(1)(1)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111111 (0)(1)(1)(1)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000000 (1)(0)(0)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000001 (1)(0)(0)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000010 (1)(0)(0)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000011 (1)(0)(0)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000100 (1)(0)(0)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000101 (1)(0)(0)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000110 (1)(0)(0)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000111 (1)(0)(0)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001000 (1)(0)(0)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001001 (1)(0)(0)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001010 (1)(0)(0)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001011 (1)(0)(0)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001100 (1)(0)(0)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001101 (1)(0)(0)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001110 (1)(0)(0)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001111 (1)(0)(0)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010000 (1)(0)(0)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010001 (1)(0)(0)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010010 (1)(0)(0)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010011 (1)(0)(0)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010100 (1)(0)(0)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010101 (1)(0)(0)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010110 (1)(0)(0)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010111 (1)(0)(0)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011000 (1)(0)(0)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011001 (1)(0)(0)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011010 (1)(0)(0)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011011 (1)(0)(0)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011100 (1)(0)(0)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011101 (1)(0)(0)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011110 (1)(0)(0)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011111 (1)(0)(0)(1)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100000 (1)(0)(1)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100001 (1)(0)(1)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100010 (1)(0)(1)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100011 (1)(0)(1)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100100 (1)(0)(1)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100101 (1)(0)(1)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100110 (1)(0)(1)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100111 (1)(0)(1)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101000 (1)(0)(1)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101001 (1)(0)(1)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101010 (1)(0)(1)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101011 (1)(0)(1)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101100 (1)(0)(1)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101101 (1)(0)(1)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101110 (1)(0)(1)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101111 (1)(0)(1)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110000 (1)(0)(1)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110001 (1)(0)(1)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110010 (1)(0)(1)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110011 (1)(0)(1)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110100 (1)(0)(1)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110101 (1)(0)(1)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110110 (1)(0)(1)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110111 (1)(0)(1)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111000 (1)(0)(1)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111001 (1)(0)(1)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111010 (1)(0)(1)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111011 (1)(0)(1)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111100 (1)(0)(1)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111101 (1)(0)(1)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111110 (1)(0)(1)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111111 (1)(0)(1)(1)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000000 (1)(1)(0)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000001 (1)(1)(0)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000010 (1)(1)(0)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000011 (1)(1)(0)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000100 (1)(1)(0)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000101 (1)(1)(0)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000110 (1)(1)(0)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000111 (1)(1)(0)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001000 (1)(1)(0)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001001 (1)(1)(0)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001010 (1)(1)(0)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001011 (1)(1)(0)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001100 (1)(1)(0)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001101 (1)(1)(0)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001110 (1)(1)(0)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001111 (1)(1)(0)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010000 (1)(1)(0)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010001 (1)(1)(0)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010010 (1)(1)(0)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010011 (1)(1)(0)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010100 (1)(1)(0)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010101 (1)(1)(0)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010110 (1)(1)(0)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010111 (1)(1)(0)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011000 (1)(1)(0)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011001 (1)(1)(0)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011010 (1)(1)(0)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011011 (1)(1)(0)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011100 (1)(1)(0)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011101 (1)(1)(0)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011110 (1)(1)(0)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011111 (1)(1)(0)(1)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100000 (1)(1)(1)(0)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100001 (1)(1)(1)(0)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100010 (1)(1)(1)(0)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100011 (1)(1)(1)(0)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100100 (1)(1)(1)(0)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100101 (1)(1)(1)(0)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100110 (1)(1)(1)(0)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100111 (1)(1)(1)(0)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101000 (1)(1)(1)(0)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101001 (1)(1)(1)(0)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101010 (1)(1)(1)(0)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101011 (1)(1)(1)(0)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101100 (1)(1)(1)(0)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101101 (1)(1)(1)(0)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101110 (1)(1)(1)(0)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101111 (1)(1)(1)(0)(1)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110000 (1)(1)(1)(1)(0)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110001 (1)(1)(1)(1)(0)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110010 (1)(1)(1)(1)(0)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110011 (1)(1)(1)(1)(0)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110100 (1)(1)(1)(1)(0)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110101 (1)(1)(1)(1)(0)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110110 (1)(1)(1)(1)(0)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110111 (1)(1)(1)(1)(0)(1)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111000 (1)(1)(1)(1)(1)(0)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111001 (1)(1)(1)(1)(1)(0)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111010 (1)(1)(1)(1)(1)(0)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111011 (1)(1)(1)(1)(1)(0)(1)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111100 (1)(1)(1)(1)(1)(1)(0)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111101 (1)(1)(1)(1)(1)(1)(0)(1), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111110 (1)(1)(1)(1)(1)(1)(1)(0), 
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111111 (1)(1)(1)(1)(1)(1)(1)(1), 
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/Jamfile.v2	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+#==============================================================================
+
+project boost/libs/act/doc ;
+import boostbook : boostbook ;
+using quickbook ;
+    
+boostbook quickbook
+    :
+        act.qbk
+    :
+        <xsl:param>boost.root=../../../..
+        <xsl:param>boost.libraries=../../../libraries.htm
+        <xsl:param>chunk.section.depth=4
+        <xsl:param>chunk.first.sections=1
+        <xsl:param>toc.section.depth=3
+        <xsl:param>toc.max.depth=3
+        <xsl:param>generate.section.toc.level=4
+    ;
+
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/concepts/interlocked_type.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/concepts/interlocked_type.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/concepts/interlocked_type.qbk	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -128,7 +128,7 @@
                                                      memory semantics.
                                                     ]
                                                    ]                           ]
-[[`safe_get( iv )`]  [`I`]            [Returns the value of `iv`.
+[[`retrieve( iv )`]  [`I`]            [Returns the value of `iv`.
                                                     [tablenote This template is
                                                      used for retrieving the
                                                      value of an object with the
@@ -137,7 +137,7 @@
                                                      recent value after any
                                                      modifications done by other
                                                      threads. The value is also
-                                                     guaranteed to not be
+                                                     guaranteed to not be only
                                                      partially updated by
                                                      another thread.
                                                     ]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/Jamfile.v2	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,44 @@
+#==============================================================================
+#    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)
+#==============================================================================
+
+import testing ;
+    
+project act
+    : requirements
+        <library>../../thread/build//boost_thread
+    ;
+
+{
+    test-suite utility/binary
+        : [ run binary.cpp ]
+    ;
+
+    test-suite act/interlocked
+        : [ run interlocked/retrieve.cpp ]
+
+          [ run interlocked/assign/assign.cpp ]
+          [ run interlocked/assign/assign_acquire.cpp ]
+
+          [ run interlocked/assign_if_was/assign_if_was.cpp ]
+          [ run interlocked/assign_if_was/assign_if_was_acquire.cpp ]
+          [ run interlocked/assign_if_was/assign_if_was_release.cpp ]
+
+          [ run interlocked/add_assign/add_assign.cpp ]
+          [ run interlocked/add_assign/add_assign_acquire.cpp ]
+          [ run interlocked/add_assign/add_assign_release.cpp ]
+
+          [ run interlocked/subtract_assign/subtract_assign.cpp ]
+          [ run interlocked/subtract_assign/subtract_assign_acquire.cpp ]
+          [ run interlocked/subtract_assign/subtract_assign_release.cpp ]
+    ;
+    
+    test-suite act
+        : [ run concurrent_consumer_policy.cpp ]
+          [ run bounded_queue_policy.cpp ]
+    ;
+}
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/binary.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/binary.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,652 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#include <boost/test/minimal.hpp>
+#include <boost/utility/binary.hpp>
+#include <algorithm>
+#include <cstddef>
+
+/*
+Note: Behavior for long long types without a suffix is unspecified since such
+      types are not in the current C++ standard, and therefore implicit creation
+      of binary values with more than 32 bits without a suffix is not tested.
+      Because of this, if you must use binary values which are larger than 32
+      bits, please use one of the macros with suffixes.
+
+      This file tests every single valid bit-grouping on its own, and some
+      random combinations of bit-groupings.
+
+      The values generated here were done using www.random.org for "true" random
+      number generation.
+*/
+
+struct left_is_not_one_less_than_right
+{
+  bool operator ()( unsigned int left, unsigned int right ) const
+  {
+    return right != left + 1;
+  }
+};
+
+template< std::size_t Size >
+bool is_ascending_from_0_array( unsigned int const (&array)[Size] )
+{
+  unsigned int const* const curr = array,
+                    * const end  = array + Size;
+
+  return    ( *curr == 0 )
+         && (    std::adjacent_find( curr, end
+                                   , left_is_not_one_less_than_right()
+                                   )
+              == end
+            );
+}
+
+std::size_t const unsigned_int_id = 1,
+                  unsigned_long_int_id = 2;
+
+typedef char (&unsigned_int_id_type)[unsigned_int_id];
+typedef char (&unsigned_long_int_id_type)[unsigned_long_int_id];
+
+// Note: No definitions on purpose (only used for type checking)
+unsigned_int_id_type      binary_type_checker( unsigned int );
+unsigned_long_int_id_type binary_type_checker( unsigned long int );
+
+std::size_t const num_random_test_values = 32;
+
+// Note: These hex values should all correspond with the binary array below
+unsigned int const random_unsigned_ints_hex[num_random_test_values]
+  = { 0x0103u, 0x77ebu, 0x5f36u, 0x1f18u, 0xc530u, 0xa73au, 0xd6f8u, 0x0919u
+    , 0xfbb0u, 0x3e7cu, 0xd0e9u, 0x22c8u, 0x724eu, 0x14fau, 0xd98eu, 0x40b5
+    , 0xeba0u, 0xfe50u, 0x688au, 0x1b05u, 0x5f9cu, 0xe4fcu, 0xa7b8u, 0xd3acu
+    , 0x1dddu, 0xbf04u, 0x8352u, 0xe89cu, 0x7506u, 0xe767u, 0xf489u, 0xe167
+    };
+
+unsigned int const random_unsigned_ints_binary[num_random_test_values]
+  = { BOOST_BINARY( 0 00010000 0011 ), BOOST_BINARY( 0 11101 1111  101011 )
+    , BOOST_BINARY( 010111 1100110 1 1 0 ), BOOST_BINARY( 000 1 11110 00 11000 )
+    , BOOST_BINARY( 110 001010 0110 000 ), BOOST_BINARY( 1010 01110011 1010 )
+    , BOOST_BINARY( 11 010 1 101111 1000 ), BOOST_BINARY( 0000 100100 0110 01 )
+    , BOOST_BINARY( 1111 101110 11 0000 ), BOOST_BINARY( 00111110 01111100 )
+    , BOOST_BINARY( 11  010 000111 01001 ), BOOST_BINARY( 00100 010110   01000 )
+    , BOOST_BINARY( 01 11001001 001110 ), BOOST_BINARY( 0010 1001111 1010 )
+    , BOOST_BINARY( 1101 1 00110 0 01110 ), BOOST_BINARY( 100 000 01011010 1 )
+    , BOOST_BINARY( 11 1010 1110 1000 00 ), BOOST_BINARY( 11111 110010 10000 )
+    , BOOST_BINARY( 01101 00010 001010 ), BOOST_BINARY( 000 11011 000001 01 )
+    , BOOST_BINARY( 01 01111 1100111 00 ), BOOST_BINARY( 1 110010 0111111 00 )
+    , BOOST_BINARY( 101 0011 11 01110 00 ), BOOST_BINARY( 110100 1 110101 100 )
+    , BOOST_BINARY( 00 1110111 011 101 ), BOOST_BINARY( 1011 1111 00000 100 )
+    , BOOST_BINARY( 1000 00110 101 0010 ), BOOST_BINARY( 1110  10001 001110 0 )
+    , BOOST_BINARY( 011 1010100 000 110 ), BOOST_BINARY( 1110 0111 01100 111 )
+    , BOOST_BINARY( 11110 10010 001001 ), BOOST_BINARY( 11 1000010 1100 111 )
+    };
+
+unsigned int const unsigned_ints_1_bit[2] =
+{ BOOST_BINARY( 0 )
+, BOOST_BINARY( 1 )
+};
+
+unsigned int const unsigned_ints_2_bits[4] =
+{ BOOST_BINARY( 00 )
+, BOOST_BINARY( 01 )
+, BOOST_BINARY( 10 )
+, BOOST_BINARY( 11 )
+};
+
+unsigned int const unsigned_ints_3_bits[8] =
+{ BOOST_BINARY( 000 )
+, BOOST_BINARY( 001 )
+, BOOST_BINARY( 010 )
+, BOOST_BINARY( 011 )
+, BOOST_BINARY( 100 )
+, BOOST_BINARY( 101 )
+, BOOST_BINARY( 110 )
+, BOOST_BINARY( 111 )
+};
+
+unsigned int const unsigned_ints_4_bits[16] =
+{ BOOST_BINARY( 0000 )
+, BOOST_BINARY( 0001 )
+, BOOST_BINARY( 0010 )
+, BOOST_BINARY( 0011 )
+, BOOST_BINARY( 0100 )
+, BOOST_BINARY( 0101 )
+, BOOST_BINARY( 0110 )
+, BOOST_BINARY( 0111 )
+, BOOST_BINARY( 1000 )
+, BOOST_BINARY( 1001 )
+, BOOST_BINARY( 1010 )
+, BOOST_BINARY( 1011 )
+, BOOST_BINARY( 1100 )
+, BOOST_BINARY( 1101 )
+, BOOST_BINARY( 1110 )
+, BOOST_BINARY( 1111 )
+};
+
+unsigned int const unsigned_ints_5_bits[32] =
+{ BOOST_BINARY( 00000 )
+, BOOST_BINARY( 00001 )
+, BOOST_BINARY( 00010 )
+, BOOST_BINARY( 00011 )
+, BOOST_BINARY( 00100 )
+, BOOST_BINARY( 00101 )
+, BOOST_BINARY( 00110 )
+, BOOST_BINARY( 00111 )
+, BOOST_BINARY( 01000 )
+, BOOST_BINARY( 01001 )
+, BOOST_BINARY( 01010 )
+, BOOST_BINARY( 01011 )
+, BOOST_BINARY( 01100 )
+, BOOST_BINARY( 01101 )
+, BOOST_BINARY( 01110 )
+, BOOST_BINARY( 01111 )
+, BOOST_BINARY( 10000 )
+, BOOST_BINARY( 10001 )
+, BOOST_BINARY( 10010 )
+, BOOST_BINARY( 10011 )
+, BOOST_BINARY( 10100 )
+, BOOST_BINARY( 10101 )
+, BOOST_BINARY( 10110 )
+, BOOST_BINARY( 10111 )
+, BOOST_BINARY( 11000 )
+, BOOST_BINARY( 11001 )
+, BOOST_BINARY( 11010 )
+, BOOST_BINARY( 11011 )
+, BOOST_BINARY( 11100 )
+, BOOST_BINARY( 11101 )
+, BOOST_BINARY( 11110 )
+, BOOST_BINARY( 11111 )
+};
+
+unsigned int const unsigned_ints_6_bits[64] =
+{ BOOST_BINARY( 000000 )
+, BOOST_BINARY( 000001 )
+, BOOST_BINARY( 000010 )
+, BOOST_BINARY( 000011 )
+, BOOST_BINARY( 000100 )
+, BOOST_BINARY( 000101 )
+, BOOST_BINARY( 000110 )
+, BOOST_BINARY( 000111 )
+, BOOST_BINARY( 001000 )
+, BOOST_BINARY( 001001 )
+, BOOST_BINARY( 001010 )
+, BOOST_BINARY( 001011 )
+, BOOST_BINARY( 001100 )
+, BOOST_BINARY( 001101 )
+, BOOST_BINARY( 001110 )
+, BOOST_BINARY( 001111 )
+, BOOST_BINARY( 010000 )
+, BOOST_BINARY( 010001 )
+, BOOST_BINARY( 010010 )
+, BOOST_BINARY( 010011 )
+, BOOST_BINARY( 010100 )
+, BOOST_BINARY( 010101 )
+, BOOST_BINARY( 010110 )
+, BOOST_BINARY( 010111 )
+, BOOST_BINARY( 011000 )
+, BOOST_BINARY( 011001 )
+, BOOST_BINARY( 011010 )
+, BOOST_BINARY( 011011 )
+, BOOST_BINARY( 011100 )
+, BOOST_BINARY( 011101 )
+, BOOST_BINARY( 011110 )
+, BOOST_BINARY( 011111 )
+, BOOST_BINARY( 100000 )
+, BOOST_BINARY( 100001 )
+, BOOST_BINARY( 100010 )
+, BOOST_BINARY( 100011 )
+, BOOST_BINARY( 100100 )
+, BOOST_BINARY( 100101 )
+, BOOST_BINARY( 100110 )
+, BOOST_BINARY( 100111 )
+, BOOST_BINARY( 101000 )
+, BOOST_BINARY( 101001 )
+, BOOST_BINARY( 101010 )
+, BOOST_BINARY( 101011 )
+, BOOST_BINARY( 101100 )
+, BOOST_BINARY( 101101 )
+, BOOST_BINARY( 101110 )
+, BOOST_BINARY( 101111 )
+, BOOST_BINARY( 110000 )
+, BOOST_BINARY( 110001 )
+, BOOST_BINARY( 110010 )
+, BOOST_BINARY( 110011 )
+, BOOST_BINARY( 110100 )
+, BOOST_BINARY( 110101 )
+, BOOST_BINARY( 110110 )
+, BOOST_BINARY( 110111 )
+, BOOST_BINARY( 111000 )
+, BOOST_BINARY( 111001 )
+, BOOST_BINARY( 111010 )
+, BOOST_BINARY( 111011 )
+, BOOST_BINARY( 111100 )
+, BOOST_BINARY( 111101 )
+, BOOST_BINARY( 111110 )
+, BOOST_BINARY( 111111 )
+};
+
+unsigned int const unsigned_ints_7_bits[128] =
+{ BOOST_BINARY( 0000000 )
+, BOOST_BINARY( 0000001 )
+, BOOST_BINARY( 0000010 )
+, BOOST_BINARY( 0000011 )
+, BOOST_BINARY( 0000100 )
+, BOOST_BINARY( 0000101 )
+, BOOST_BINARY( 0000110 )
+, BOOST_BINARY( 0000111 )
+, BOOST_BINARY( 0001000 )
+, BOOST_BINARY( 0001001 )
+, BOOST_BINARY( 0001010 )
+, BOOST_BINARY( 0001011 )
+, BOOST_BINARY( 0001100 )
+, BOOST_BINARY( 0001101 )
+, BOOST_BINARY( 0001110 )
+, BOOST_BINARY( 0001111 )
+, BOOST_BINARY( 0010000 )
+, BOOST_BINARY( 0010001 )
+, BOOST_BINARY( 0010010 )
+, BOOST_BINARY( 0010011 )
+, BOOST_BINARY( 0010100 )
+, BOOST_BINARY( 0010101 )
+, BOOST_BINARY( 0010110 )
+, BOOST_BINARY( 0010111 )
+, BOOST_BINARY( 0011000 )
+, BOOST_BINARY( 0011001 )
+, BOOST_BINARY( 0011010 )
+, BOOST_BINARY( 0011011 )
+, BOOST_BINARY( 0011100 )
+, BOOST_BINARY( 0011101 )
+, BOOST_BINARY( 0011110 )
+, BOOST_BINARY( 0011111 )
+, BOOST_BINARY( 0100000 )
+, BOOST_BINARY( 0100001 )
+, BOOST_BINARY( 0100010 )
+, BOOST_BINARY( 0100011 )
+, BOOST_BINARY( 0100100 )
+, BOOST_BINARY( 0100101 )
+, BOOST_BINARY( 0100110 )
+, BOOST_BINARY( 0100111 )
+, BOOST_BINARY( 0101000 )
+, BOOST_BINARY( 0101001 )
+, BOOST_BINARY( 0101010 )
+, BOOST_BINARY( 0101011 )
+, BOOST_BINARY( 0101100 )
+, BOOST_BINARY( 0101101 )
+, BOOST_BINARY( 0101110 )
+, BOOST_BINARY( 0101111 )
+, BOOST_BINARY( 0110000 )
+, BOOST_BINARY( 0110001 )
+, BOOST_BINARY( 0110010 )
+, BOOST_BINARY( 0110011 )
+, BOOST_BINARY( 0110100 )
+, BOOST_BINARY( 0110101 )
+, BOOST_BINARY( 0110110 )
+, BOOST_BINARY( 0110111 )
+, BOOST_BINARY( 0111000 )
+, BOOST_BINARY( 0111001 )
+, BOOST_BINARY( 0111010 )
+, BOOST_BINARY( 0111011 )
+, BOOST_BINARY( 0111100 )
+, BOOST_BINARY( 0111101 )
+, BOOST_BINARY( 0111110 )
+, BOOST_BINARY( 0111111 )
+, BOOST_BINARY( 1000000 )
+, BOOST_BINARY( 1000001 )
+, BOOST_BINARY( 1000010 )
+, BOOST_BINARY( 1000011 )
+, BOOST_BINARY( 1000100 )
+, BOOST_BINARY( 1000101 )
+, BOOST_BINARY( 1000110 )
+, BOOST_BINARY( 1000111 )
+, BOOST_BINARY( 1001000 )
+, BOOST_BINARY( 1001001 )
+, BOOST_BINARY( 1001010 )
+, BOOST_BINARY( 1001011 )
+, BOOST_BINARY( 1001100 )
+, BOOST_BINARY( 1001101 )
+, BOOST_BINARY( 1001110 )
+, BOOST_BINARY( 1001111 )
+, BOOST_BINARY( 1010000 )
+, BOOST_BINARY( 1010001 )
+, BOOST_BINARY( 1010010 )
+, BOOST_BINARY( 1010011 )
+, BOOST_BINARY( 1010100 )
+, BOOST_BINARY( 1010101 )
+, BOOST_BINARY( 1010110 )
+, BOOST_BINARY( 1010111 )
+, BOOST_BINARY( 1011000 )
+, BOOST_BINARY( 1011001 )
+, BOOST_BINARY( 1011010 )
+, BOOST_BINARY( 1011011 )
+, BOOST_BINARY( 1011100 )
+, BOOST_BINARY( 1011101 )
+, BOOST_BINARY( 1011110 )
+, BOOST_BINARY( 1011111 )
+, BOOST_BINARY( 1100000 )
+, BOOST_BINARY( 1100001 )
+, BOOST_BINARY( 1100010 )
+, BOOST_BINARY( 1100011 )
+, BOOST_BINARY( 1100100 )
+, BOOST_BINARY( 1100101 )
+, BOOST_BINARY( 1100110 )
+, BOOST_BINARY( 1100111 )
+, BOOST_BINARY( 1101000 )
+, BOOST_BINARY( 1101001 )
+, BOOST_BINARY( 1101010 )
+, BOOST_BINARY( 1101011 )
+, BOOST_BINARY( 1101100 )
+, BOOST_BINARY( 1101101 )
+, BOOST_BINARY( 1101110 )
+, BOOST_BINARY( 1101111 )
+, BOOST_BINARY( 1110000 )
+, BOOST_BINARY( 1110001 )
+, BOOST_BINARY( 1110010 )
+, BOOST_BINARY( 1110011 )
+, BOOST_BINARY( 1110100 )
+, BOOST_BINARY( 1110101 )
+, BOOST_BINARY( 1110110 )
+, BOOST_BINARY( 1110111 )
+, BOOST_BINARY( 1111000 )
+, BOOST_BINARY( 1111001 )
+, BOOST_BINARY( 1111010 )
+, BOOST_BINARY( 1111011 )
+, BOOST_BINARY( 1111100 )
+, BOOST_BINARY( 1111101 )
+, BOOST_BINARY( 1111110 )
+, BOOST_BINARY( 1111111 )
+};
+unsigned int const unsigned_ints_8_bits[256] =
+{ BOOST_BINARY( 00000000 )
+, BOOST_BINARY( 00000001 )
+, BOOST_BINARY( 00000010 )
+, BOOST_BINARY( 00000011 )
+, BOOST_BINARY( 00000100 )
+, BOOST_BINARY( 00000101 )
+, BOOST_BINARY( 00000110 )
+, BOOST_BINARY( 00000111 )
+, BOOST_BINARY( 00001000 )
+, BOOST_BINARY( 00001001 )
+, BOOST_BINARY( 00001010 )
+, BOOST_BINARY( 00001011 )
+, BOOST_BINARY( 00001100 )
+, BOOST_BINARY( 00001101 )
+, BOOST_BINARY( 00001110 )
+, BOOST_BINARY( 00001111 )
+, BOOST_BINARY( 00010000 )
+, BOOST_BINARY( 00010001 )
+, BOOST_BINARY( 00010010 )
+, BOOST_BINARY( 00010011 )
+, BOOST_BINARY( 00010100 )
+, BOOST_BINARY( 00010101 )
+, BOOST_BINARY( 00010110 )
+, BOOST_BINARY( 00010111 )
+, BOOST_BINARY( 00011000 )
+, BOOST_BINARY( 00011001 )
+, BOOST_BINARY( 00011010 )
+, BOOST_BINARY( 00011011 )
+, BOOST_BINARY( 00011100 )
+, BOOST_BINARY( 00011101 )
+, BOOST_BINARY( 00011110 )
+, BOOST_BINARY( 00011111 )
+, BOOST_BINARY( 00100000 )
+, BOOST_BINARY( 00100001 )
+, BOOST_BINARY( 00100010 )
+, BOOST_BINARY( 00100011 )
+, BOOST_BINARY( 00100100 )
+, BOOST_BINARY( 00100101 )
+, BOOST_BINARY( 00100110 )
+, BOOST_BINARY( 00100111 )
+, BOOST_BINARY( 00101000 )
+, BOOST_BINARY( 00101001 )
+, BOOST_BINARY( 00101010 )
+, BOOST_BINARY( 00101011 )
+, BOOST_BINARY( 00101100 )
+, BOOST_BINARY( 00101101 )
+, BOOST_BINARY( 00101110 )
+, BOOST_BINARY( 00101111 )
+, BOOST_BINARY( 00110000 )
+, BOOST_BINARY( 00110001 )
+, BOOST_BINARY( 00110010 )
+, BOOST_BINARY( 00110011 )
+, BOOST_BINARY( 00110100 )
+, BOOST_BINARY( 00110101 )
+, BOOST_BINARY( 00110110 )
+, BOOST_BINARY( 00110111 )
+, BOOST_BINARY( 00111000 )
+, BOOST_BINARY( 00111001 )
+, BOOST_BINARY( 00111010 )
+, BOOST_BINARY( 00111011 )
+, BOOST_BINARY( 00111100 )
+, BOOST_BINARY( 00111101 )
+, BOOST_BINARY( 00111110 )
+, BOOST_BINARY( 00111111 )
+, BOOST_BINARY( 01000000 )
+, BOOST_BINARY( 01000001 )
+, BOOST_BINARY( 01000010 )
+, BOOST_BINARY( 01000011 )
+, BOOST_BINARY( 01000100 )
+, BOOST_BINARY( 01000101 )
+, BOOST_BINARY( 01000110 )
+, BOOST_BINARY( 01000111 )
+, BOOST_BINARY( 01001000 )
+, BOOST_BINARY( 01001001 )
+, BOOST_BINARY( 01001010 )
+, BOOST_BINARY( 01001011 )
+, BOOST_BINARY( 01001100 )
+, BOOST_BINARY( 01001101 )
+, BOOST_BINARY( 01001110 )
+, BOOST_BINARY( 01001111 )
+, BOOST_BINARY( 01010000 )
+, BOOST_BINARY( 01010001 )
+, BOOST_BINARY( 01010010 )
+, BOOST_BINARY( 01010011 )
+, BOOST_BINARY( 01010100 )
+, BOOST_BINARY( 01010101 )
+, BOOST_BINARY( 01010110 )
+, BOOST_BINARY( 01010111 )
+, BOOST_BINARY( 01011000 )
+, BOOST_BINARY( 01011001 )
+, BOOST_BINARY( 01011010 )
+, BOOST_BINARY( 01011011 )
+, BOOST_BINARY( 01011100 )
+, BOOST_BINARY( 01011101 )
+, BOOST_BINARY( 01011110 )
+, BOOST_BINARY( 01011111 )
+, BOOST_BINARY( 01100000 )
+, BOOST_BINARY( 01100001 )
+, BOOST_BINARY( 01100010 )
+, BOOST_BINARY( 01100011 )
+, BOOST_BINARY( 01100100 )
+, BOOST_BINARY( 01100101 )
+, BOOST_BINARY( 01100110 )
+, BOOST_BINARY( 01100111 )
+, BOOST_BINARY( 01101000 )
+, BOOST_BINARY( 01101001 )
+, BOOST_BINARY( 01101010 )
+, BOOST_BINARY( 01101011 )
+, BOOST_BINARY( 01101100 )
+, BOOST_BINARY( 01101101 )
+, BOOST_BINARY( 01101110 )
+, BOOST_BINARY( 01101111 )
+, BOOST_BINARY( 01110000 )
+, BOOST_BINARY( 01110001 )
+, BOOST_BINARY( 01110010 )
+, BOOST_BINARY( 01110011 )
+, BOOST_BINARY( 01110100 )
+, BOOST_BINARY( 01110101 )
+, BOOST_BINARY( 01110110 )
+, BOOST_BINARY( 01110111 )
+, BOOST_BINARY( 01111000 )
+, BOOST_BINARY( 01111001 )
+, BOOST_BINARY( 01111010 )
+, BOOST_BINARY( 01111011 )
+, BOOST_BINARY( 01111100 )
+, BOOST_BINARY( 01111101 )
+, BOOST_BINARY( 01111110 )
+, BOOST_BINARY( 01111111 )
+, BOOST_BINARY( 10000000 )
+, BOOST_BINARY( 10000001 )
+, BOOST_BINARY( 10000010 )
+, BOOST_BINARY( 10000011 )
+, BOOST_BINARY( 10000100 )
+, BOOST_BINARY( 10000101 )
+, BOOST_BINARY( 10000110 )
+, BOOST_BINARY( 10000111 )
+, BOOST_BINARY( 10001000 )
+, BOOST_BINARY( 10001001 )
+, BOOST_BINARY( 10001010 )
+, BOOST_BINARY( 10001011 )
+, BOOST_BINARY( 10001100 )
+, BOOST_BINARY( 10001101 )
+, BOOST_BINARY( 10001110 )
+, BOOST_BINARY( 10001111 )
+, BOOST_BINARY( 10010000 )
+, BOOST_BINARY( 10010001 )
+, BOOST_BINARY( 10010010 )
+, BOOST_BINARY( 10010011 )
+, BOOST_BINARY( 10010100 )
+, BOOST_BINARY( 10010101 )
+, BOOST_BINARY( 10010110 )
+, BOOST_BINARY( 10010111 )
+, BOOST_BINARY( 10011000 )
+, BOOST_BINARY( 10011001 )
+, BOOST_BINARY( 10011010 )
+, BOOST_BINARY( 10011011 )
+, BOOST_BINARY( 10011100 )
+, BOOST_BINARY( 10011101 )
+, BOOST_BINARY( 10011110 )
+, BOOST_BINARY( 10011111 )
+, BOOST_BINARY( 10100000 )
+, BOOST_BINARY( 10100001 )
+, BOOST_BINARY( 10100010 )
+, BOOST_BINARY( 10100011 )
+, BOOST_BINARY( 10100100 )
+, BOOST_BINARY( 10100101 )
+, BOOST_BINARY( 10100110 )
+, BOOST_BINARY( 10100111 )
+, BOOST_BINARY( 10101000 )
+, BOOST_BINARY( 10101001 )
+, BOOST_BINARY( 10101010 )
+, BOOST_BINARY( 10101011 )
+, BOOST_BINARY( 10101100 )
+, BOOST_BINARY( 10101101 )
+, BOOST_BINARY( 10101110 )
+, BOOST_BINARY( 10101111 )
+, BOOST_BINARY( 10110000 )
+, BOOST_BINARY( 10110001 )
+, BOOST_BINARY( 10110010 )
+, BOOST_BINARY( 10110011 )
+, BOOST_BINARY( 10110100 )
+, BOOST_BINARY( 10110101 )
+, BOOST_BINARY( 10110110 )
+, BOOST_BINARY( 10110111 )
+, BOOST_BINARY( 10111000 )
+, BOOST_BINARY( 10111001 )
+, BOOST_BINARY( 10111010 )
+, BOOST_BINARY( 10111011 )
+, BOOST_BINARY( 10111100 )
+, BOOST_BINARY( 10111101 )
+, BOOST_BINARY( 10111110 )
+, BOOST_BINARY( 10111111 )
+, BOOST_BINARY( 11000000 )
+, BOOST_BINARY( 11000001 )
+, BOOST_BINARY( 11000010 )
+, BOOST_BINARY( 11000011 )
+, BOOST_BINARY( 11000100 )
+, BOOST_BINARY( 11000101 )
+, BOOST_BINARY( 11000110 )
+, BOOST_BINARY( 11000111 )
+, BOOST_BINARY( 11001000 )
+, BOOST_BINARY( 11001001 )
+, BOOST_BINARY( 11001010 )
+, BOOST_BINARY( 11001011 )
+, BOOST_BINARY( 11001100 )
+, BOOST_BINARY( 11001101 )
+, BOOST_BINARY( 11001110 )
+, BOOST_BINARY( 11001111 )
+, BOOST_BINARY( 11010000 )
+, BOOST_BINARY( 11010001 )
+, BOOST_BINARY( 11010010 )
+, BOOST_BINARY( 11010011 )
+, BOOST_BINARY( 11010100 )
+, BOOST_BINARY( 11010101 )
+, BOOST_BINARY( 11010110 )
+, BOOST_BINARY( 11010111 )
+, BOOST_BINARY( 11011000 )
+, BOOST_BINARY( 11011001 )
+, BOOST_BINARY( 11011010 )
+, BOOST_BINARY( 11011011 )
+, BOOST_BINARY( 11011100 )
+, BOOST_BINARY( 11011101 )
+, BOOST_BINARY( 11011110 )
+, BOOST_BINARY( 11011111 )
+, BOOST_BINARY( 11100000 )
+, BOOST_BINARY( 11100001 )
+, BOOST_BINARY( 11100010 )
+, BOOST_BINARY( 11100011 )
+, BOOST_BINARY( 11100100 )
+, BOOST_BINARY( 11100101 )
+, BOOST_BINARY( 11100110 )
+, BOOST_BINARY( 11100111 )
+, BOOST_BINARY( 11101000 )
+, BOOST_BINARY( 11101001 )
+, BOOST_BINARY( 11101010 )
+, BOOST_BINARY( 11101011 )
+, BOOST_BINARY( 11101100 )
+, BOOST_BINARY( 11101101 )
+, BOOST_BINARY( 11101110 )
+, BOOST_BINARY( 11101111 )
+, BOOST_BINARY( 11110000 )
+, BOOST_BINARY( 11110001 )
+, BOOST_BINARY( 11110010 )
+, BOOST_BINARY( 11110011 )
+, BOOST_BINARY( 11110100 )
+, BOOST_BINARY( 11110101 )
+, BOOST_BINARY( 11110110 )
+, BOOST_BINARY( 11110111 )
+, BOOST_BINARY( 11111000 )
+, BOOST_BINARY( 11111001 )
+, BOOST_BINARY( 11111010 )
+, BOOST_BINARY( 11111011 )
+, BOOST_BINARY( 11111100 )
+, BOOST_BINARY( 11111101 )
+, BOOST_BINARY( 11111110 )
+, BOOST_BINARY( 11111111 )
+};
+
+int test_main( int, char *[] )
+{
+  BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_1_bit ) );
+  BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_2_bits ) );
+  BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_3_bits ) );
+  BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_4_bits ) );
+  BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_5_bits ) );
+  BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_6_bits ) );
+  BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_7_bits ) );
+  BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_8_bits ) );
+
+  BOOST_CHECK( std::equal( &random_unsigned_ints_hex[0]
+                         , random_unsigned_ints_hex + num_random_test_values
+                         , &random_unsigned_ints_binary[0]
+                         )
+             );
+
+  BOOST_CHECK(    sizeof( binary_type_checker( BOOST_BINARY_U( 110100 1010 ) ) )
+               == unsigned_int_id
+             );
+
+  BOOST_CHECK(    sizeof( binary_type_checker( BOOST_BINARY_UL( 11110 ) ) )
+               == unsigned_long_int_id
+             );
+
+  BOOST_CHECK(    sizeof( binary_type_checker( BOOST_BINARY_LU( 10 0001 ) ) )
+               == unsigned_long_int_id
+             );
+
+  return 0;
+}
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/test/consumer_policy_tester.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/test/consumer_policy_tester.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/consumer_policy_tester.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -21,7 +21,7 @@
 #include <boost/mpl/if.hpp>
 
 #include <boost/act/interlocked/increment/increment_acquire.hpp>
-#include <boost/act/interlocked/safe_get.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
 #include <boost/act/interlocked/integer/types.hpp>
 
 #include <boost/act/consumer_policy/scoped_consumer.hpp>
@@ -173,7 +173,7 @@
     consumer( long_process( test_val ) );
   }
 
-  if( interlocked::safe_get( test_val ) != 2 )
+  if( interlocked::retrieve( test_val ) != 2 )
     BOOST_ERROR( "Scoped Consumer does not complete execution prior to." );
 /*
   using namespace boost::act;
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/add_assign.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/add_assign.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,11 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#define BOOST_ACT_TEST_INTERLOCKED_NAME add_assign
+
+#include "add_assign_helper.hpp"
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/add_assign_acquire.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/add_assign_acquire.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,11 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#define BOOST_ACT_TEST_INTERLOCKED_NAME add_assign_acquire
+
+#include "add_assign_helper.hpp"
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/add_assign_helper.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/add_assign_helper.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,51 @@
+/*=============================================================================
+    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_TEST_INTERLOCKED_ADD_ASSIGN_ADD_ASSIGN_HELPER
+#define BOOST_ACT_TEST_INTERLOCKED_ADD_ASSIGN_ADD_ASSIGN_HELPER
+
+#include <boost/test/minimal.hpp>
+#include "../integral_additive_helper.hpp"
+#include "../operation_result_checker.hpp"
+#include <boost/act/interlocked/add_assign.hpp>
+#include <boost/act/interlocked/add_assign/add_assign_result.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+struct BOOST_PP_CAT( interlocked_
+                   , BOOST_ACT_TEST_INTERLOCKED_NAME
+                   )
+{
+  template< typename LeftType, typename RightType >
+  typename boost::act::interlocked::add_assign_result< LeftType >::type
+  operator ()( LeftType& left, RightType const& right ) const
+  {
+    return boost::act::interlocked::BOOST_ACT_TEST_INTERLOCKED_NAME
+           ( left, right );
+  }
+};
+
+int test_main( int, char *[] )
+{
+  brute_operation_result_checker( basic_add()
+                                , BOOST_PP_CAT( interlocked_
+                                              , BOOST_ACT_TEST_INTERLOCKED_NAME
+                                              )
+                                              ()
+                                );
+
+  brute_additive_assign_test( basic_add_assign()
+                            , BOOST_PP_CAT( interlocked_
+                                          , BOOST_ACT_TEST_INTERLOCKED_NAME
+                                          )
+                                          ()
+                            );
+
+  return 0;
+}
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/add_assign_release.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/add_assign/add_assign_release.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,11 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#define BOOST_ACT_TEST_INTERLOCKED_NAME add_assign_release
+
+#include "add_assign_helper.hpp"
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign/assign.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign/assign.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#include "../assign_retrieve_helper.hpp"
+#include <boost/thread/barrier.hpp>
+#include "assign_helper.hpp"
+
+int test_main( int, char *[] )
+{
+  test_assign_retrieve_no_threads( single_thread_basic_get()
+                                 , interlocked_assign_set()
+                                 );
+
+  test_assign_retrieve_no_threads( interlocked_retrieve_get()
+                                 , interlocked_assign_set()
+                                 );
+
+  {
+    boost::barrier barrier( 2 );
+
+    test_assign_retrieve_with_threads( barrier
+                                     , interlocked_retrieve_get()
+                                     , interlocked_assign_set()
+                                     );
+  }
+
+  brute_assign_test( interlocked_assign_set() );
+
+  return 0;
+}
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign/assign_acquire.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign/assign_acquire.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,49 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#include "../assign_retrieve_helper.hpp"
+#include <boost/thread/barrier.hpp>
+#include "assign_helper.hpp"
+
+#include <boost/act/interlocked/assign/assign_acquire.hpp>
+#include <boost/act/interlocked/assign/assign_result.hpp>
+
+struct interlocked_assign_acquire_set
+{
+  template< typename VariableType, typename SourceType >
+  typename boost::act::interlocked::assign_result< VariableType >::type
+  operator ()( VariableType& var, SourceType new_val ) const
+  {
+    return boost::act::interlocked::assign_acquire( var, new_val );
+  }
+};
+
+int test_main( int, char *[] )
+{
+
+  test_assign_retrieve_no_threads( single_thread_basic_get()
+                                 , interlocked_assign_acquire_set()
+                                 );
+
+  test_assign_retrieve_no_threads( interlocked_retrieve_get()
+                                 , interlocked_assign_acquire_set()
+                                 );
+
+  {
+    boost::barrier barrier( 2 );
+
+    test_assign_retrieve_with_threads( barrier
+                                     , interlocked_retrieve_get()
+                                     , interlocked_assign_acquire_set()
+                                     );
+  }
+
+  brute_assign_test( interlocked_assign_acquire_set() );
+
+  return 0;
+}
\ No newline at end of file
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign/assign_helper.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign/assign_helper.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,120 @@
+/*=============================================================================
+    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_TEST_INTERLOCKED_ASSIGN_ASSIGN_HELPER_HPP
+#define BOOST_ACT_TEST_INTERLOCKED_ASSIGN_ASSIGN_HELPER_HPP
+
+#include <boost/test/minimal.hpp>
+#include <boost/foreach.hpp>
+#include <boost/act/interlocked/assign/assign_result.hpp>
+#include <boost/act/interlocked/integer/types.hpp>
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/thread.hpp>
+#include <boost/thread/barrier.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <set>
+
+#include "../random_uint8.hpp"
+
+template< typename ContainerType, typename BarrierType, typename AssignType
+        , typename DestinationType, typename SourceType
+        >
+class perform_assign
+{
+public:
+  perform_assign( ContainerType& container_init, boost::mutex& mutex_init
+                , BarrierType& barrier_init, AssignType assign_init
+                , DestinationType& destination_init, SourceType source_init
+                )
+    : container_m( container_init ), mutex_m( mutex_init )
+    , barrier_m( barrier_init ), assign_m( assign_init )
+    , destination_m( destination_init ), source_m( source_init ) {}
+public:
+  void operator ()() const
+  {
+    barrier_m.wait(); // Wait until all other perform_assigns are ready
+
+    typedef typename boost::act::interlocked::assign_result< DestinationType >
+            ::type result_type;
+
+    result_type const result = assign_m( destination_m, source_m );
+
+    BOOST_CHECK( result.new_value() == source_m );
+
+    {
+      boost::mutex::scoped_lock const lock( mutex_m );
+
+      typename ContainerType::iterator it
+        = container_m.find( result.old_value() );
+
+      BOOST_CHECK( it != container_m.end() );
+
+      container_m.erase( it );
+    }
+  }
+private:
+  ContainerType& container_m;
+  boost::mutex& mutex_m;
+  BarrierType& barrier_m;
+  AssignType assign_m;
+  DestinationType& destination_m;
+  SourceType source_m;
+};
+
+template< typename ContainerType, typename BarrierType, typename AssignType
+        , typename DestinationType, typename SourceType
+        >
+perform_assign< ContainerType, BarrierType, AssignType
+              , DestinationType, SourceType
+              >
+make_perform_assign( ContainerType& container, boost::mutex& mutex
+                   , BarrierType& barrier, AssignType assign
+                   , DestinationType& destination, SourceType source
+                   )
+{
+  return perform_assign< ContainerType, BarrierType, AssignType
+                       , DestinationType, SourceType
+                       >
+                       ( container, mutex, barrier, assign
+                       , destination, source
+                       );
+}
+
+template< typename AssignType >
+void brute_assign_test( AssignType assign )
+{
+  boost::barrier barrier( static_cast< unsigned int >( random_uint8.size() ) );
+
+  boost::thread_group thread_group;
+
+  boost::mutex mutex;
+
+  typedef boost::act::interlocked::uint_least8_t uint_least8_t;
+
+  std::multiset< uint_least8_t > old_values
+    ( boost::begin( random_uint8 ), boost::end( random_uint8 ) );
+
+  uint_least8_t test_var = 0;
+
+  old_values.insert( test_var );
+
+  BOOST_FOREACH( uint_least8_t val, random_uint8 )
+  {
+    thread_group.add_thread
+      ( new boost::thread( make_perform_assign( old_values, mutex, barrier
+                                              , assign, test_var, val
+                                              )
+                         )
+      );
+  }
+
+  thread_group.join_all();
+}
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,15 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+// Note: These tests could be a little bit better. Currently testing is done by
+//       forcing compound CAS operations to use their default implementation
+//       (which is to internally use assign_if_was).
+
+#define BOOST_ACT_INTERLOCKED_FORCE_DEFAULTS
+
+#include "../add_assign/add_assign.cpp"
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_acquire.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_acquire.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,15 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+// Note: These tests could be a little bit better. Currently testing is done by
+//       forcing compound CAS operations to use their default implementation
+//       (which is to internally use assign_if_was).
+
+#define BOOST_ACT_INTERLOCKED_FORCE_DEFAULTS
+
+#include "../add_assign/add_assign_acquire.cpp"
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_helper.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_helper.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,171 @@
+/*=============================================================================
+    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_TEST_INTERLOCKED_ASSIGN_IF_WAS_HELPER_HPP
+#define BOOST_ACT_TEST_INTERLOCKED_ASSIGN_IF_WAS_HELPER_HPP
+
+#include <boost/test/minimal.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
+#include <boost/thread/thread.hpp>
+#include <boost/thread/xtime.hpp>
+#include <boost/act/interlocked/assign.hpp>
+#include <boost/act/interlocked/integer.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+// Note: Logic of how test will be performed (any better ideas?):
+//
+//       Start with a non-volatile variable.
+//
+//       Create a separate thread, in new thread, set value with
+//       interlocked::assign
+//       
+//       In primary thread, wait several seconds to give the opposing thread
+//       a decent amount of time to set the value, then yield,
+//       then use retrieve.
+//
+//       Repeat similar tests with different threads.
+//
+//       Test will potentially have both false positives and false negatives,
+//       though improper results should hopefully keep to a minimum,
+//       particularly in a multicore environment.
+
+template< typename GetType, typename SetType >
+void test_assign_retrieve_no_threads( GetType get, SetType set )
+{
+  using namespace boost::act::interlocked;
+
+  int_fast8_t test_var = 0;
+
+  set( test_var, 5 );
+  BOOST_CHECK( get( test_var ) == 5 );
+
+  set( test_var, -20 );
+  BOOST_CHECK( get( test_var ) == -20 );
+  BOOST_CHECK( get( test_var ) == -20 );
+
+  set( test_var, 112 );
+  set( test_var, 36 );
+  BOOST_CHECK( get( test_var ) == 36 );
+  BOOST_CHECK( get( test_var ) == 36 );
+
+  set( test_var, -14 );
+  BOOST_CHECK( get( test_var ) == -14 );
+}
+
+struct single_thread_basic_set
+{
+  template< typename VariableType, typename SourceType >
+  void operator ()( VariableType& var, SourceType new_val ) const
+  {
+    var = new_val;
+  }
+};
+
+struct single_thread_basic_get
+{
+  template< typename VariableType >
+  typename boost::remove_cv< VariableType >::type
+  operator ()( VariableType& var ) const
+  {
+    return var;
+  }
+};
+
+struct interlocked_assign_set
+{
+  template< typename VariableType, typename SourceType >
+  void operator ()( VariableType& var, SourceType new_val ) const
+  {
+    boost::act::interlocked::assign( var, new_val );
+  }
+};
+
+struct interlocked_retrieve_get
+{
+  template< typename VariableType >
+  typename boost::remove_cv< VariableType >::type
+  operator ()( VariableType& var ) const
+  {
+    return boost::act::interlocked::retrieve( var );
+  }
+};
+
+template< typename VariableType, typename SourceType
+        , typename GetType, typename SetType
+        >
+class assign_thread_fun
+{
+public:
+  assign_thread_fun( VariableType& var_init, SourceType new_val_init
+                   , GetType get_init, SetType set_init
+                   )
+    : var_m( var_init ), new_val_m( new_val_init )
+    , get_m( get_init ), set_m( set_init ) {}
+public:
+  void operator ()() const
+  {
+    set_m( var_m, new_val_m );
+  }
+private:
+  VariableType& var_m,
+                new_val_m;
+  GetType get_m;
+  SetType set_m;
+};
+
+template< typename VariableType, typename SourceType
+        , typename GetType, typename SetType
+        >
+assign_thread_fun< VariableType, SourceType, GetType, SetType >
+make_assign_thread_fun( VariableType& var_init, SourceType new_val_init
+                      , GetType get, SetType set_init
+                      )
+{
+  return assign_thread_fun< VariableType, SourceType, GetType, SetType >
+         ( var_init, new_val_init
+         , get, set_init
+         );
+}
+
+template< typename VariableType, typename SourceType
+        , typename GetType, typename SetType
+        >
+void assign_in_new_thread( VariableType& var, SourceType new_val
+                         , GetType get, SetType set
+                         )
+{
+  boost::thread( make_assign_thread_fun( var, new_val, get, set ) );
+
+  boost::xtime time_of_completion;
+
+  boost::xtime_get( &time_of_completion, boost::TIME_UTC );
+
+  time_of_completion.sec += 2;
+
+  boost::thread::sleep( time_of_completion );
+
+  boost::thread::yield();
+
+  BOOST_CHECK( get( var ) == new_val );
+}
+
+template< typename GetType, typename SetType >
+void test_assign_retrieve_with_threads( GetType get, SetType set )
+{
+  using namespace boost::act::interlocked;
+
+  int_fast8_t test_var = 0;
+
+  assign_in_new_thread( test_var, 5,   get, set );
+  assign_in_new_thread( test_var, -20, get, set );
+  assign_in_new_thread( test_var, 112, get, set );
+  assign_in_new_thread( test_var, 36,  get, set );
+  assign_in_new_thread( test_var, -14, get, set );
+}
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_release.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_release.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,15 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+// Note: These tests could be a little bit better. Currently testing is done by
+//       forcing compound CAS operations to use their default implementation
+//       (which is to internally use assign_if_was).
+
+#define BOOST_ACT_INTERLOCKED_FORCE_DEFAULTS
+
+#include "../add_assign/add_assign_release.cpp"
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_retrieve_helper.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_retrieve_helper.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,158 @@
+/*=============================================================================
+    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_TEST_INTERLOCKED_ASSIGN_RETRIEVE_HELPER_HPP
+#define BOOST_ACT_TEST_INTERLOCKED_ASSIGN_RETRIEVE_HELPER_HPP
+
+#include <boost/test/minimal.hpp>
+#include <boost/act/interlocked/retrieve.hpp>
+#include <boost/act/interlocked/assign/assign_result.hpp>
+#include <boost/thread/thread.hpp>
+#include <boost/thread/barrier.hpp>
+#include <boost/act/interlocked/assign.hpp>
+#include <boost/act/interlocked/integer/types.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/foreach.hpp>
+
+#include "random_uint8.hpp"
+
+// Note: Logic of how test are performed:
+//
+//       Start with a non-volatile variable.
+//
+//       Create a separate thread, in new thread, set value with
+//       interlocked::assign and approach barrier (thresh 2).
+//       
+//       In primary thread, approach barrier, then check value. 
+//
+//       Repeat similar tests with different threads.
+//
+//       Test will potentially have both false positives and false negatives,
+//       though improper results should hopefully keep to a minimum,
+//       particularly in a multicore environment.
+
+template< typename GetType, typename SetType >
+void test_assign_retrieve_no_threads( GetType get, SetType set )
+{
+  using namespace boost::act::interlocked;
+
+  uint_least8_t test_var = 0;
+
+  BOOST_FOREACH( uint_least8_t val, random_uint8 )
+  {
+    set( test_var, val );
+    BOOST_CHECK( get( test_var ) == val );
+  }
+}
+
+struct single_thread_basic_set
+{
+  template< typename VariableType, typename SourceType >
+  void operator ()( VariableType& var, SourceType new_val ) const
+  {
+    var = new_val;
+  }
+};
+
+struct single_thread_basic_get
+{
+  template< typename VariableType >
+  typename boost::remove_cv< VariableType >::type
+  operator ()( VariableType& var ) const
+  {
+    return var;
+  }
+};
+
+struct interlocked_assign_set
+{
+  template< typename VariableType, typename SourceType >
+  typename boost::act::interlocked::assign_result< VariableType >::type
+  operator ()( VariableType& var, SourceType new_val ) const
+  {
+    return boost::act::interlocked::assign( var, new_val );
+  }
+};
+
+struct interlocked_retrieve_get
+{
+  template< typename VariableType >
+  typename boost::remove_cv< VariableType >::type
+  operator ()( VariableType& var ) const
+  {
+    return boost::act::interlocked::retrieve( var );
+  }
+};
+
+template< typename VariableType, typename SourceType
+        , typename BarrierType, typename SetType
+        >
+class assign_thread_fun
+{
+public:
+  assign_thread_fun( VariableType& var_init, SourceType new_val_init
+                   , BarrierType& barrier_init, SetType set_init
+                   )
+    : var_m( var_init ), new_val_m( new_val_init )
+    , barrier_m( barrier_init ), set_m( set_init ) {}
+public:
+  void operator ()() const
+  {
+    set_m( var_m, new_val_m );
+    barrier_m.wait();
+  }
+private:
+  VariableType& var_m,
+                new_val_m;
+  BarrierType& barrier_m;
+  SetType set_m;
+};
+
+template< typename VariableType, typename SourceType
+        , typename BarrierType, typename SetType
+        >
+assign_thread_fun< VariableType, SourceType, BarrierType, SetType >
+make_assign_thread_fun( VariableType& var_init, SourceType new_val_init
+                      , BarrierType& barrier_init, SetType set_init
+                      )
+{
+  return assign_thread_fun< VariableType, SourceType, BarrierType, SetType >
+         ( var_init, new_val_init
+         , barrier_init, set_init
+         );
+}
+
+template< typename VariableType, typename SourceType
+        , typename BarrierType, typename GetType, typename SetType
+        >
+void assign_in_new_thread( VariableType& var, SourceType new_val
+                         , BarrierType& barrier, GetType get, SetType set
+                         )
+{
+  boost::thread thread( make_assign_thread_fun( var, new_val, barrier, set ) );
+  barrier.wait();
+  BOOST_CHECK( get( var ) == new_val );
+  thread.join();
+}
+
+template< typename BarrierType, typename GetType, typename SetType >
+void test_assign_retrieve_with_threads( BarrierType& barrier
+                                      , GetType get, SetType set
+                                      )
+{
+  typedef boost::act::interlocked::uint_least8_t uint_least8_t;
+
+  uint_least8_t test_var = 0;
+
+  BOOST_FOREACH( uint_least8_t val, random_uint8 )
+  {
+    assign_in_new_thread( test_var, val, barrier, get, set );
+  }
+}
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/bitand_assign/bitand_assign.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/bitand_assign/bitand_assign.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,38 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#include <boost/test/minimal.hpp>
+#include "../operation_result_checker.hpp"
+#include <boost/act/interlocked/bitand_assign.hpp>
+#include <boost/act/interlocked/bitand_assign/bitand_assign_result.hpp>
+
+struct interlocked_bitand_assign
+{
+  template< typename LeftType, typename RightType >
+  typename boost::act::interlocked::bitand_assign_result< LeftType >::type
+  operator ()( LeftType& left, RightType const& right ) const
+  {
+    return boost::act::interlocked::bitand_assign( left, right );
+  }
+};
+
+int test_main( int, char *[] )
+{
+  brute_operation_result_checker( basic_bitand()
+                                , interlocked_bitand_assign()
+                                );
+/*
+  brute_additive_assign_test( basic_add_assign()
+                            , BOOST_PP_CAT( interlocked_
+                                          , BOOST_ACT_TEST_INTERLOCKED_NAME
+                                          )
+                                          ()
+                            );
+*/
+  return 0;
+}
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/integral_additive_helper.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/integral_additive_helper.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,135 @@
+/*=============================================================================
+    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_TEST_INTERLOCKED_INTEGRAL_ADDITIVE_HELPER_HPP
+#define BOOST_ACT_TEST_INTERLOCKED_INTEGRAL_ADDITIVE_HELPER_HPP
+
+#include <boost/test/minimal.hpp>
+#include <boost/foreach.hpp>
+#include <boost/act/interlocked/integer/types.hpp>
+#include <boost/thread/thread.hpp>
+#include <boost/thread/barrier.hpp>
+#include <boost/integer_traits.hpp>
+
+#include "../random_uint8.hpp"
+
+/*
+Logic for additive tests:
+
+Initialize an unsigned value.
+
+Create a table with N random values.
+
+Create N threads, with each one an assigned value from the table.
+
+All threads approach a barrier after which they all perform their operation
+
+Join all threads.
+
+Compare new value with the value it should be.
+
+*/
+
+struct basic_add_assign
+{
+  template< typename LeftType, typename RightType >
+  void operator ()( LeftType& left, RightType const& right ) const
+  {
+    left += right;
+  }
+};
+
+struct basic_subtract_assign
+{
+  template< typename LeftType, typename RightType >
+  void operator ()( LeftType& left, RightType const& right ) const
+  {
+    left -= right;
+  }
+};
+
+template< typename BarrierType, typename OperationType
+        , typename DestinationType, typename OperandType
+        >
+class perform_operation
+{
+public:
+  perform_operation( BarrierType& barrier_init, OperationType operation_init
+                   , DestinationType& destination_init, OperandType operand_init
+                   )
+    : barrier_m( barrier_init ), operation_m( operation_init )
+    , destination_m( destination_init ), operand_m( operand_init ) {}
+public:
+  void operator ()() const
+  {
+    barrier_m.wait(); // Wait until all other perform_operation are ready
+
+    operation_m( destination_m, operand_m );
+  }
+private:
+  BarrierType& barrier_m;
+  OperationType operation_m;
+  DestinationType& destination_m;
+  OperandType operand_m;
+};
+
+template< typename BarrierType, typename OperationType
+        , typename DestinationType, typename OperandType
+        >
+perform_operation< BarrierType, OperationType
+                 , DestinationType, OperandType
+                 >
+make_perform_operation( BarrierType& barrier, OperationType operation
+                      , DestinationType& destination, OperandType operand
+                      )
+{
+  return perform_operation< BarrierType, OperationType
+                          , DestinationType, OperandType
+                          >
+                          ( barrier, operation
+                          , destination, operand
+                          );
+}
+
+template< typename SingleThreadOperationType, typename OperationType >
+void brute_additive_assign_test( SingleThreadOperationType single_thread_op
+                               , OperationType operation
+                               )
+{
+  boost::barrier barrier( static_cast< unsigned int >( random_uint8.size() ) );
+
+  boost::thread_group thread_group;
+
+  typedef boost::act::interlocked::uint_least8_t  uint_least8_t;
+  typedef boost::act::interlocked::uint_least32_t uint_least32_t;
+
+  uint_least32_t test_var
+    = boost::integer_traits< uint_least32_t >::const_max / 2,
+                 test_var_copy = test_var;
+
+  BOOST_FOREACH( uint_least8_t val, random_uint8 )
+  {
+    thread_group.add_thread
+      ( new boost::thread( make_perform_operation( barrier, operation
+                                                 , test_var, val
+                                                 )
+                         )
+      );
+  }
+
+  thread_group.join_all();
+
+  BOOST_FOREACH( uint_least8_t val, random_uint8 )
+  {
+    single_thread_op( test_var_copy, val );
+  }
+
+  BOOST_CHECK( boost::act::interlocked::retrieve( test_var ) == test_var_copy );
+}
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/operation_result_checker.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/operation_result_checker.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,81 @@
+/*=============================================================================
+    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_TEST_INTERLOCKED_OPERATION_RESULT_CHECKER_HPP
+#define BOOST_ACT_TEST_INTERLOCKED_OPERATION_RESULT_CHECKER_HPP
+
+/*
+Note: The template in this file only checks for proper result functionality.
+      It is not a multithreaded test for checking the application of interlocked
+      operations in a multithreaded environment.
+*/
+
+#include <boost/test/minimal.hpp>
+#include <boost/foreach.hpp>
+#include <boost/act/interlocked/integer/types.hpp>
+
+#include "../random_uint8.hpp"
+
+#include <boost/preprocessor/cat.hpp>
+
+#define BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP( name, op )                      \
+struct BOOST_PP_CAT( basic_, name )                                            \
+{                                                                              \
+  template< typename LeftType, typename RightType >                            \
+  LeftType operator ()( LeftType const& left, RightType const& right ) const   \
+  {                                                                            \
+    return static_cast< LeftType >( left op right );                           \
+  }                                                                            \
+};
+
+BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP( add,      + )
+BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP( subtract, - )
+BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP( multiply, * )
+BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP( divide,   / )
+BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP( mod,      % )
+BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP( bitand,   & )
+BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP( bitor,    | )
+BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP( xor,      ^ )
+BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP( lshift,   << )
+BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP( rshift,   >> )
+
+#undef BOOST_ACT_TEST_DETAIL_BASIC_BINARY_OP
+
+template< typename ValueType, typename ResultType >
+void check_operation_results( ValueType old_value, ValueType expected_value
+                            , ResultType result
+                            )
+{
+  ValueType const result_old_value = result.old_value(),
+                  result_new_value = result.new_value();
+
+  BOOST_CHECK( result_old_value == old_value );
+  BOOST_CHECK( result_new_value == expected_value );
+}
+
+
+template< typename SingleThreadOperationType, typename OperationType >
+void brute_operation_result_checker( SingleThreadOperationType single_thread_op
+                                   , OperationType operation
+                                   )
+{
+  typedef boost::act::interlocked::uint_least8_t  uint_least8_t;
+
+  uint_least8_t test_var = 0;
+
+  BOOST_FOREACH( uint_least8_t val, random_uint8 )
+  {
+    uint_least8_t const copy = test_var;
+
+    check_operation_results( copy, single_thread_op( copy, val )
+                                 , operation( test_var, val )
+                           );
+  }
+}
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/random_uint8.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/random_uint8.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,31 @@
+/*=============================================================================
+    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_TEST_INTERLOCKED_RANDOM_UINT8_HPP
+#define BOOST_ACT_TEST_INTERLOCKED_RANDOM_UINT8_HPP
+
+#include <boost/array.hpp>
+#include <boost/act/interlocked/integer/types.hpp>
+
+boost::array< boost::act::interlocked::uint_least8_t, 64 > const random_uint8
+  = { 38,  71,  69,  12,  13
+    , 90,  97,  52,  47,  14
+    , 46,  21,  27,  18,  12
+    , 49,  69,  22,  91,  101
+    , 117, 29,  120, 105, 95
+    , 14,  41,  25,  109, 114
+    , 101, 100, 83,  56,  104
+    , 113, 22,  122, 108, 127
+    , 14,  85,  11,  97,  67
+    , 63,  32,  57,  99,  106
+    , 8,   49,  27,  82,  43
+    , 56,  126, 127, 123, 37
+    , 25,  23,  102, 82
+    };
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/retrieve.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/retrieve.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 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)
+==============================================================================*/
+
+#include "assign_retrieve_helper.hpp"
+#include <boost/thread/barrier.hpp>
+
+int test_main( int, char *[] )
+{
+  test_assign_retrieve_no_threads( interlocked_retrieve_get()
+                                 , single_thread_basic_set()
+                                 );
+
+  test_assign_retrieve_no_threads( interlocked_retrieve_get()
+                                 , interlocked_assign_set()
+                                 );
+
+  {
+    boost::barrier barrier( 2 );
+
+    test_assign_retrieve_with_threads( barrier
+                                     , interlocked_retrieve_get()
+                                     , interlocked_assign_set()
+                                     );
+  }
+
+  return 0;
+}
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/subtract_assign.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/subtract_assign.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,11 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#define BOOST_ACT_TEST_INTERLOCKED_NAME subtract_assign
+
+#include "subtract_assign_helper.hpp"
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/subtract_assign_acquire.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/subtract_assign_acquire.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,11 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#define BOOST_ACT_TEST_INTERLOCKED_NAME subtract_assign_acquire
+
+#include "subtract_assign_helper.hpp"
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/subtract_assign_helper.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/subtract_assign_helper.hpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,50 @@
+/*=============================================================================
+    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_TEST_INTERLOCKED_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_HELPER
+#define BOOST_ACT_TEST_INTERLOCKED_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_HELPER
+
+#include "../integral_additive_helper.hpp"
+#include "../operation_result_checker.hpp"
+#include <boost/act/interlocked/subtract_assign.hpp>
+#include <boost/act/interlocked/subtract_assign/subtract_assign_result.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+struct BOOST_PP_CAT( interlocked_
+                   , BOOST_ACT_TEST_INTERLOCKED_NAME
+                   )
+{
+  template< typename LeftType, typename RightType >
+  typename boost::act::interlocked::subtract_assign_result< LeftType >::type
+  operator ()( LeftType& left, RightType const& right ) const
+  {
+    return boost::act::interlocked::BOOST_ACT_TEST_INTERLOCKED_NAME
+           ( left, right );
+  }
+};
+
+int test_main( int, char *[] )
+{
+  brute_operation_result_checker( basic_subtract()
+                                , BOOST_PP_CAT( interlocked_
+                                              , BOOST_ACT_TEST_INTERLOCKED_NAME
+                                              )
+                                              ()
+                                );
+
+  brute_additive_assign_test( basic_subtract_assign()
+                            , BOOST_PP_CAT( interlocked_
+                                          , BOOST_ACT_TEST_INTERLOCKED_NAME
+                                          )
+                                          ()
+                            );
+
+  return 0;
+}
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/subtract_assign_release.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/subtract_assign/subtract_assign_release.cpp	2007-06-15 19:59:39 EDT (Fri, 15 Jun 2007)
@@ -0,0 +1,11 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#define BOOST_ACT_TEST_INTERLOCKED_NAME subtract_assign_release
+
+#include "subtract_assign_helper.hpp"