$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: matt_calabrese_at_[hidden]
Date: 2007-07-07 21:27:55
Author: matt_calabrese
Date: 2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
New Revision: 7385
URL: http://svn.boost.org/trac/boost/changeset/7385
Log:
Added automatic support for interlocked integer types which are not appropriately aligned (as described in N2145). Added least and fast integer typedefs and some Boost.Integer-style metafunctions for interlocked integer type selection. Adjusted docs to reflect the additions. Note -- tests need to be rewritten to test all interlocked integer types.
Added:
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/unaligned_assign_if_was.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unaligned_interlocked.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/metafunctions.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/typedefs.qbk
Text files modified: 
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_acq_rel.hpp                                       |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_acquire.hpp                                       |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_release.hpp                                       |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_unordered.hpp                                     |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_acq_rel.hpp                                               |    45 +++++++                                 
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_acquire.hpp                                               |    45 +++++++                                 
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_release.hpp                                               |    45 +++++++                                 
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_unordered.hpp                                             |    45 +++++++                                 
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_acq_rel.hpp                                 |    24 +++-                                    
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_acquire.hpp                                 |    16 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_release.hpp                                 |    16 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_unordered.hpp                               |    16 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_acquire.hpp                                 |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_release.hpp                                 |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/bitor_assign_acquire.hpp                                   |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/bitor_assign_release.hpp                                   |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder_dont_include.hpp                                |    64 +++++++++++                             
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/integer/selection.hpp                                                   |   221 +++++++++++++++++++++------------------ 
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/lshift_assign/lshift_assign_acquire.hpp                                 |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/lshift_assign/lshift_assign_release.hpp                                 |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_acq_rel.hpp                                               |    27 ++--                                    
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_acquire.hpp                                               |    27 ++--                                    
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_release.hpp                                               |    27 ++--                                    
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_unordered.hpp                                             |    27 ++--                                    
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/rshift_assign/rshift_assign.hpp                                         |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/rshift_assign/rshift_assign_acquire.hpp                                 |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/rshift_assign/rshift_assign_release.hpp                                 |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_acq_rel.hpp                             |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_acquire.hpp                             |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_release.hpp                             |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_unordered.hpp                           |     2                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest                                                               |     3                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked.html                                                  |    22 +++                                     
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html |    32 ++++-                                   
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html    |    23 +--                                     
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html    |    53 +++++++-                                
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support.html                              |     6                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html             |    16 +-                                      
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html                                                    |     6                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html                                                                  |    24 ++++                                    
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk                                                                  |     1                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_arithmetic_type.qbk                             |     3                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_natural_type.qbk                                |     5                                         
   43 files changed, 620 insertions(+), 253 deletions(-)
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_acq_rel.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_acq_rel.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_acq_rel.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( add_assign, acq_rel, additive )
+( add_assign, acq_rel, +, additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: 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.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_acquire.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( add_assign, acquire, additive )
+( add_assign, acquire, +, additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: 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.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_release.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( add_assign, release, additive )
+( add_assign, release, +, additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_unordered.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_unordered.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_unordered.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( add_assign, unordered, additive )
+( add_assign, unordered, +, additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_acq_rel.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_acq_rel.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_acq_rel.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -21,13 +21,13 @@
 
 #include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
 #include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/act/interlocked/integer/selection.hpp>
+#include <boost/act/interlocked/modify/modify_acq_rel.hpp>
 
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_meta.hpp>
-
 #include <boost/act/interlocked/detail/impl.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
@@ -37,6 +37,39 @@
 
 namespace boost { namespace act { namespace interlocked {
 
+namespace detail
+{
+
+template< typename OperandType >
+class assign_acq_rel_fun
+{
+public:
+  explicit assign_acq_rel_fun( OperandType const& operand_init )
+    : operand_m( operand_init ) {}
+
+  template< typename Type >
+  typename remove_cv< Type >::type operator ()( Type& ) const
+  {
+    return static_cast< typename remove_cv< Type >::type >( operand_m );
+  }
+private:
+  OperandType const& operand_m;
+};
+
+struct assign_acq_rel_unaligned
+{
+  template< typename TargetType, typename SourceType >
+  static typename remove_cv< TargetType >::type
+  execute( TargetType& destination, SourceType const& source )
+  {
+    return modify< acq_rel >( destination
+                            , assign_acq_rel_fun< SourceType >( source )
+                            );
+  }
+};
+
+}
+
 template< typename Semantics, typename TargetType, typename SourceType >
 typename lazy_enable_if
 <
@@ -51,9 +84,11 @@
 ::type
 assign( TargetType& destination, SourceType const& new_value )
 {
-  return detail::impl_meta< detail::assign_acq_rel_impl, TargetType >
-         ::execute( destination, new_value );
-
+  return mpl::if_< detail::is_unaligned_interlocked< TargetType >
+                 , detail::assign_acq_rel_unaligned
+                 , detail::assign_acq_rel_impl
+                 >
+                 ::type::execute( destination, new_value );
 }
 
 template< typename Semantics, typename TargetType, typename SourceType >
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-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -21,13 +21,13 @@
 
 #include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
 #include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/act/interlocked/integer/selection.hpp>
+#include <boost/act/interlocked/modify/modify_acquire.hpp>
 
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_meta.hpp>
-
 #include <boost/act/interlocked/detail/impl.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
@@ -37,6 +37,39 @@
 
 namespace boost { namespace act { namespace interlocked {
 
+namespace detail
+{
+
+template< typename OperandType >
+class assign_acquire_fun
+{
+public:
+  explicit assign_acquire_fun( OperandType const& operand_init )
+    : operand_m( operand_init ) {}
+
+  template< typename Type >
+  typename remove_cv< Type >::type operator ()( Type& ) const
+  {
+    return static_cast< typename remove_cv< Type >::type >( operand_m );
+  }
+private:
+  OperandType const& operand_m;
+};
+
+struct assign_acquire_unaligned
+{
+  template< typename TargetType, typename SourceType >
+  static typename remove_cv< TargetType >::type
+  execute( TargetType& destination, SourceType const& source )
+  {
+    return modify< acquire >( destination
+                            , assign_acquire_fun< SourceType >( source )
+                            );
+  }
+};
+
+}
+
 template< typename Semantics, typename TargetType, typename SourceType >
 typename lazy_enable_if
 <
@@ -51,9 +84,11 @@
 ::type
 assign( TargetType& destination, SourceType const& new_value )
 {
-  return detail::impl_meta< detail::assign_acquire_impl, TargetType >
-         ::execute( destination, new_value );
-
+  return mpl::if_< detail::is_unaligned_interlocked< TargetType >
+                 , detail::assign_acquire_unaligned
+                 , detail::assign_acquire_impl
+                 >
+                 ::type::execute( destination, new_value );
 }
 
 template< typename Semantics, typename TargetType, typename SourceType >
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_release.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_release.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_release.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -21,13 +21,13 @@
 
 #include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
 #include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/act/interlocked/integer/selection.hpp>
+#include <boost/act/interlocked/modify/modify_release.hpp>
 
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_meta.hpp>
-
 #include <boost/act/interlocked/detail/impl.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
@@ -37,6 +37,39 @@
 
 namespace boost { namespace act { namespace interlocked {
 
+namespace detail
+{
+
+template< typename OperandType >
+class assign_release_fun
+{
+public:
+  explicit assign_release_fun( OperandType const& operand_init )
+    : operand_m( operand_init ) {}
+
+  template< typename Type >
+  typename remove_cv< Type >::type operator ()( Type& ) const
+  {
+    return static_cast< typename remove_cv< Type >::type >( operand_m );
+  }
+private:
+  OperandType const& operand_m;
+};
+
+struct assign_release_unaligned
+{
+  template< typename TargetType, typename SourceType >
+  static typename remove_cv< TargetType >::type
+  execute( TargetType& destination, SourceType const& source )
+  {
+    return modify< release >( destination
+                            , assign_release_fun< SourceType >( source )
+                            );
+  }
+};
+
+}
+
 template< typename Semantics, typename TargetType, typename SourceType >
 typename lazy_enable_if
 <
@@ -51,9 +84,11 @@
 ::type
 assign( TargetType& destination, SourceType const& new_value )
 {
-  return detail::impl_meta< detail::assign_release_impl, TargetType >
-         ::execute( destination, new_value );
-
+  return mpl::if_< detail::is_unaligned_interlocked< TargetType >
+                 , detail::assign_release_unaligned
+                 , detail::assign_release_impl
+                 >
+                 ::type::execute( destination, new_value );
 }
 
 template< typename Semantics, typename TargetType, typename SourceType >
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_unordered.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_unordered.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_unordered.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -21,13 +21,13 @@
 
 #include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
 #include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/act/interlocked/integer/selection.hpp>
+#include <boost/act/interlocked/modify/modify_unordered.hpp>
 
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_meta.hpp>
-
 #include <boost/act/interlocked/detail/impl.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
@@ -37,6 +37,39 @@
 
 namespace boost { namespace act { namespace interlocked {
 
+namespace detail
+{
+
+template< typename OperandType >
+class assign_unordered_fun
+{
+public:
+  explicit assign_unordered_fun( OperandType const& operand_init )
+    : operand_m( operand_init ) {}
+
+  template< typename Type >
+  typename remove_cv< Type >::type operator ()( Type& ) const
+  {
+    return static_cast< typename remove_cv< Type >::type >( operand_m );
+  }
+private:
+  OperandType const& operand_m;
+};
+
+struct assign_unordered_unaligned
+{
+  template< typename TargetType, typename SourceType >
+  static typename remove_cv< TargetType >::type
+  execute( TargetType& destination, SourceType const& source )
+  {
+    return modify< unordered >( destination
+                              , assign_unordered_fun< SourceType >( source )
+                              );
+  }
+};
+
+}
+
 template< typename Semantics, typename TargetType, typename SourceType >
 typename lazy_enable_if
 <
@@ -51,9 +84,11 @@
 ::type
 assign( TargetType& destination, SourceType const& new_value )
 {
-  return detail::impl_meta< detail::assign_unordered_impl, TargetType >
-         ::execute( destination, new_value );
-
+  return mpl::if_< detail::is_unaligned_interlocked< TargetType >
+                 , detail::assign_unordered_unaligned
+                 , detail::assign_unordered_impl
+                 >
+                 ::type::execute( destination, new_value );
 }
 
 template< typename Semantics, typename TargetType, typename SourceType >
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_acq_rel.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_acq_rel.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_acq_rel.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -21,12 +21,13 @@
 
 #include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
 #include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/act/interlocked/integer/selection.hpp>
 
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_meta.hpp>
+#include <boost/act/interlocked/assign_if_was/detail/unaligned_assign_if_was.hpp>
 
 #include <boost/act/interlocked/detail/impl.hpp>
 
@@ -37,6 +38,12 @@
 
 namespace boost { namespace act { namespace interlocked {
 
+namespace detail
+{
+template< typename Semantics >
+struct unaligned_assign_if_was;
+}
+
 template< typename Semantics
         , typename TargetType, typename SourceType, typename ConditionType
         >
@@ -46,8 +53,8 @@
   <
     is_same< Semantics, acq_rel >
   , detail::are_valid_store_style_params< TargetType, SourceType const
-                                         , ConditionType const
-                                         >
+                                        , ConditionType const
+                                        >
   , mpl::not_< detail::is_interlocked_bool< TargetType > >
   >
 , remove_cv< TargetType >
@@ -57,8 +64,11 @@
              , ConditionType const& expected_value
              )
 {
-  return detail::impl_meta< detail::assign_if_was_acq_rel_impl, TargetType >
-         ::execute( destination, new_value, expected_value );
+  return mpl::if_< detail::is_unaligned_interlocked< TargetType >
+                 , detail::unaligned_assign_if_was< Semantics >
+                 , detail::assign_if_was_acq_rel_impl
+                 >
+                 ::type::execute( destination, new_value, expected_value );
 }
 
 template< typename Semantics
@@ -70,8 +80,8 @@
   <
     is_same< Semantics, acq_rel >
   , detail::are_valid_store_style_params< TargetType, SourceType const
-                                       , ConditionType const
-                                       >
+                                        , ConditionType const
+                                        >
   , detail::is_interlocked_bool< TargetType >
   >
 , remove_cv< TargetType >
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-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -21,12 +21,13 @@
 
 #include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
 #include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/act/interlocked/integer/selection.hpp>
 
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_meta.hpp>
+#include <boost/act/interlocked/assign_if_was/detail/unaligned_assign_if_was.hpp>
 
 #include <boost/act/interlocked/detail/impl.hpp>
 
@@ -37,6 +38,12 @@
 
 namespace boost { namespace act { namespace interlocked {
 
+namespace detail
+{
+template< typename Semantics >
+struct unaligned_assign_if_was;
+}
+
 template< typename Semantics
         , typename TargetType, typename SourceType, typename ConditionType
         >
@@ -57,8 +64,11 @@
              , ConditionType const& expected_value
              )
 {
-  return detail::impl_meta< detail::assign_if_was_acquire_impl, TargetType >
-         ::execute( destination, new_value, expected_value );
+  return mpl::if_< detail::is_unaligned_interlocked< TargetType >
+                 , detail::unaligned_assign_if_was< Semantics >
+                 , detail::assign_if_was_acquire_impl
+                 >
+                 ::type::execute( destination, new_value, expected_value );
 }
 
 template< typename Semantics
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-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -21,12 +21,13 @@
 
 #include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
 #include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/act/interlocked/integer/selection.hpp>
 
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_meta.hpp>
+#include <boost/act/interlocked/assign_if_was/detail/unaligned_assign_if_was.hpp>
 
 #include <boost/act/interlocked/detail/impl.hpp>
 
@@ -37,6 +38,12 @@
 
 namespace boost { namespace act { namespace interlocked {
 
+namespace detail
+{
+template< typename Semantics >
+struct unaligned_assign_if_was;
+}
+
 template< typename Semantics
         , typename TargetType, typename SourceType, typename ConditionType
         >
@@ -57,8 +64,11 @@
              , ConditionType const& expected_value
              )
 {
-  return detail::impl_meta< detail::assign_if_was_release_impl, TargetType >
-         ::execute( destination, new_value, expected_value );
+  return mpl::if_< detail::is_unaligned_interlocked< TargetType >
+                 , detail::unaligned_assign_if_was< Semantics >
+                 , detail::assign_if_was_release_impl
+                 >
+                 ::type::execute( destination, new_value, expected_value );
 }
 
 template< typename Semantics
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_unordered.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_unordered.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_unordered.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -21,12 +21,13 @@
 
 #include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
 #include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/act/interlocked/integer/selection.hpp>
 
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/not.hpp>
 
-#include <boost/act/interlocked/detail/impl_meta.hpp>
+#include <boost/act/interlocked/assign_if_was/detail/unaligned_assign_if_was.hpp>
 
 #include <boost/act/interlocked/detail/impl.hpp>
 
@@ -37,6 +38,12 @@
 
 namespace boost { namespace act { namespace interlocked {
 
+namespace detail
+{
+template< typename Semantics >
+struct unaligned_assign_if_was;
+}
+
 template< typename Semantics
         , typename TargetType, typename SourceType, typename ConditionType
         >
@@ -57,8 +64,11 @@
              , ConditionType const& expected_value
              )
 {
-  return detail::impl_meta< detail::assign_if_was_unordered_impl, TargetType >
-         ::execute( destination, new_value, expected_value );
+  return mpl::if_< detail::is_unaligned_interlocked< TargetType >
+                 , detail::unaligned_assign_if_was< Semantics >
+                 , detail::assign_if_was_unordered_impl
+                 >
+                 ::type::execute( destination, new_value, expected_value );
 }
 
 template< typename Semantics
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/unaligned_assign_if_was.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/unaligned_assign_if_was.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -0,0 +1,128 @@
+/*=============================================================================
+    Copyright (c) 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_DETAIL_UNALIGNED_AIW_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_DETAIL_UNALIGNED_AIW_HPP
+
+#include <boost/act/interlocked/assign_if_was_fwd.hpp>
+#include <boost/act/interlocked/integer/selection.hpp>
+#include <boost/act/interlocked/load/load_unordered.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/alignment_of.hpp>
+#include <boost/integer/static_log2.hpp>
+#include <boost/mpl/if.hpp>
+#include <cstddef>
+#include <utility>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename Type >
+struct aligned_relative
+{
+  typedef typename uint_t< ( sizeof( Type ) * CHAR_BIT ) >::fast type;
+};
+
+template< std::size_t TargetAlignment >
+struct pow_2_crop
+{
+  static std::size_t execute( std::size_t unaligned_address )
+  {
+    std::size_t const mask
+      = static_cast< std::size_t >
+        ( ~( static_log2< TargetAlignment >::value - 1u ) );
+
+    return static_cast< std::size_t >( unaligned_address & mask );
+  }
+};
+
+template< std::size_t TargetAlignment >
+struct generic_crop
+{
+  static std::size_t execute( std::size_t unaligned_address )
+  {
+    return static_cast< std::size_t >
+           ( ( unaligned_address / TargetAlignment ) * TargetAlignment );
+  }
+};
+
+// First is aligned address value, second is offset to unaligned
+template< typename Type >
+std::pair< std::size_t, std::ptrdiff_t > aligned_address_info( Type& object )
+{
+  std::size_t const address_value = reinterpret_cast< std::size_t >( &object );
+
+  typedef typename aligned_relative< Type >::type aligned_relative_type;
+
+  std::size_t const target_alignment
+    = alignment_of< aligned_relative_type >::value,
+
+                    aligned_address
+    = mpl::if_c< ( ( 1u << static_log2< target_alignment >::value )
+                   == target_alignment
+                 )
+               , pow_2_crop< target_alignment >
+               , generic_crop< target_alignment >
+               >
+               ::type::execute( address_value );
+
+  return std::make_pair
+         ( aligned_address
+         , static_cast< std::ptrdiff_t >( address_value - aligned_address )
+         );
+}
+
+template< typename Semantics >
+struct unaligned_assign_if_was
+{
+  template< typename LeftType >
+  static typename remove_cv< LeftType >::type
+  execute( LeftType& left, typename remove_cv< LeftType >::type right
+         , typename remove_cv< LeftType >::type expected
+         )
+  {
+    std::pair< std::size_t, std::ptrdiff_t > const object_info
+      = aligned_address_info( left );
+
+    typedef typename aligned_relative< LeftType >::type aligned_type;
+
+    aligned_type& aligned_left
+      = *reinterpret_cast< aligned_type* >( object_info.first );
+
+    // ToDo: Possibly change semantics here to acquire
+    aligned_type aligned_expected = load< unordered >( aligned_left ),
+                 aligned_right = aligned_expected;
+
+    typedef typename remove_cv< LeftType >::type unaligned_type;
+
+    unaligned_type& unaligned_right
+      = *reinterpret_cast< unaligned_type* >
+        ( reinterpret_cast< char* >( &aligned_right ) + object_info.second ),
+
+                  & unaligned_old
+      = *reinterpret_cast< unaligned_type* >
+        ( reinterpret_cast< char* >( &aligned_expected ) + object_info.second );
+
+    unaligned_old = expected;
+    unaligned_right = right;
+
+    aligned_type const aligned_result
+      = assign_if_was< Semantics >( aligned_left
+                                  , aligned_right
+                                  , aligned_expected
+                                  );
+
+    return *reinterpret_cast< unaligned_type const* >
+           (   reinterpret_cast< char const* >( &aligned_result )
+             + object_info.second
+           );
+  }
+};
+
+} } } }
+
+#endif
Modified: 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.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_acquire.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( bitand_assign, acquire, not_additive )
+( bitand_assign, acquire, &, not_additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: 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.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_release.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( bitand_assign, release, not_additive )
+( bitand_assign, release, &, not_additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: 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_acquire.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/bitor_assign_acquire.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( bitor_assign, acquire, not_additive )
+( bitor_assign, acquire, &, not_additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: 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_release.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitor_assign/bitor_assign_release.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( bitor_assign, release, not_additive )
+( bitor_assign, release, &, not_additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: 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_dont_include.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/binary_forwarder_dont_include.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -20,6 +20,7 @@
 
 #include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
 #include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/act/interlocked/integer/selection.hpp>
 #include <boost/preprocessor/tuple/elem.hpp>
 #include <boost/preprocessor/cat.hpp>
 
@@ -29,21 +30,31 @@
 
 #include <boost/act/interlocked/detail/impl_meta.hpp>
 
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_OP                       \
+BOOST_PP_TUPLE_ELEM                                                            \
+( 4, 2                                                                         \
+, BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                           \
+)
+
 #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                                                           \
+              ( 4, 3                                                           \
               , BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO             \
               )                                                                \
             )
 
+// ToDo: Change to include only appropriate semantic version
+#include <boost/act/interlocked/modify.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
 #include <boost/act/interlocked/detail/forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_INFO                            \
-( BOOST_PP_TUPLE_ELEM( 3, 0                                                    \
+( BOOST_PP_TUPLE_ELEM( 4, 0                                                    \
                      , BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO      \
                      )                                                         \
-, BOOST_PP_TUPLE_ELEM( 3, 1                                                    \
+, BOOST_PP_TUPLE_ELEM( 4, 1                                                    \
                      , BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO      \
                      )                                                         \
 )
@@ -52,6 +63,53 @@
 
 namespace boost { namespace act { namespace interlocked {
 
+namespace detail
+{
+
+template< typename OperandType >
+class BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_IMPL_FULL_NAME
+                  , _unaligned_fun_object
+                  )
+{
+public:
+  explicit
+  BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_IMPL_FULL_NAME
+              , _unaligned_fun_object
+              )( OperandType const& operand_init )
+    : operand_m( operand_init ) {}
+  
+
+  template< typename LeftType >
+  typename remove_cv< LeftType >::type
+  operator ()( LeftType& left ) const
+  {
+    return left BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_OP operand_m;
+  }
+private:
+  OperandType const& operand_m;
+};
+
+struct BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_IMPL_FULL_NAME
+                   , _unaligned_impl
+                   )
+{
+  template< typename LeftType, typename OperandType >
+  static typename remove_cv< LeftType >::type
+  execute( LeftType& left, OperandType const& operand )
+  {
+    return modify< BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SEMANTICS >
+           ( left
+           , BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_IMPL_FULL_NAME
+                         , _unaligned_fun_object
+                         )< OperandType >
+                         ( operand )
+           );
+  }
+};
+
+}
+
+
 template< typename Semantics, typename TargetType, typename OperandType >
 typename lazy_enable_if
 <
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unaligned_interlocked.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unaligned_interlocked.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+    Copyright (c) 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to the Boost Software
+    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+    http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DETAIL_UNALIGNED_INTERLOCKED_HPP
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNALIGNED_INTERLOCKED_HPP
+
+#include <boost/act/interlocked/detail/cas_support.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+} } } }
+
+#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-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -19,6 +19,7 @@
 #include <boost/type_traits/is_integral.hpp>
 #include <boost/type_traits/is_same.hpp>
 #include <boost/type_traits/is_signed.hpp>
+#include <boost/type_traits/alignment_of.hpp>
 #include <boost/mpl/assert.hpp>
 #include <boost/mpl/eval_if.hpp>
 #include <boost/mpl/if.hpp>
@@ -35,22 +36,25 @@
 #include <boost/mpl/end.hpp>
 #include <boost/mpl/identity.hpp>
 #include <boost/mpl/empty_base.hpp>
-#include <boost/preprocessor/seq/enum.hpp>
+#include <boost/mpl/modulus.hpp>
+#include <boost/mpl/equal_to.hpp>
 #include <boost/mpl/filter_view.hpp>
-#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
-//#include <boost/act/interlocked/type_traits/is_interlocked.hpp>
 #include <boost/mpl/size_t.hpp>
+#include <boost/mpl/sizeof.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/preprocessor/seq/enum.hpp>
+#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
 
 namespace boost { namespace act { namespace interlocked {
 
 namespace detail
 {
 #ifdef BOOST_NO_INT64_T
-typedef mpl::vector< signed char, short, int, long >
-        int_types_all;
+typedef mpl::vector< int_least8_t, int_least16_t, int_least32_t >
+        int_least_types_all;
 
-typedef mpl::vector< unsigned char, unsigned short, unsigned int
-                   , unsigned long > uint_types_all;
+typedef mpl::vector< uint_least8_t, uint_least16_t, uint_least32_t >
+        uint_least_types_all;
 
 typedef mpl::vector< int_fast8_t, int_fast16_t, int_fast32_t >
         int_fast_types_all;
@@ -58,11 +62,12 @@
 typedef mpl::vector< uint_fast8_t, uint_fast16_t, uint_fast32_t >
         uint_fast_types_all;
 #else
-typedef mpl::vector< signed char, short, int, long, int64_t >
-        int_types_all;
+typedef mpl::vector< int_least8_t, int_least16_t, int_least32_t, int_least64_t >
+        int_least_types_all;
 
-typedef mpl::vector< unsigned char, unsigned short, unsigned int
-                   , unsigned long, uint64_t > uint_types_all;
+typedef mpl::vector< uint_least8_t, uint_least16_t
+                   , uint_least32_t, uint_least64_t
+                   > uint_least_types_all;
 
 typedef mpl::vector< int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t >
         int_fast_types_all;
@@ -99,16 +104,6 @@
   typedef mpl::not_< is_same< it, end_it > > type;
 };
 
-typedef mpl::filter_view< int_types_all
-                        , type_is_native_interlocked_size< mpl::_1 >
-                        >
-                        int_types;
-
-typedef mpl::filter_view< uint_types_all
-                        , type_is_native_interlocked_size< mpl::_1 >
-                        >
-                        uint_types;
-
 typedef mpl::filter_view< int_fast_types_all
                         , type_is_native_interlocked_size< mpl::_1 >
                         >
@@ -123,82 +118,130 @@
 struct int_type_is_at_least_size
   : mpl::bool_< ( sizeof( Type ) >= DesiredSize::value ) > {};
 
-template< typename TypeSequence, std::size_t LeastSize >
-struct int_type_selector
+template< typename Sequence, std::size_t Bytes >
+struct int_finder_t_impl
 {
 private:
   typedef typename mpl::find_if
-          < TypeSequence
-          , int_type_is_at_least_size< mpl::_1, mpl::size_t< LeastSize > >
+          < Sequence
+          , int_type_is_at_least_size< mpl::_1, mpl::size_t< Bytes > >
           >
           ::type it_to_type;
 
-  typedef typename mpl::end< TypeSequence >::type end;
-public:
-  typedef mpl::not_< is_same< it_to_type, end > > match;
+  typedef typename mpl::end< Sequence >::type end;
 
+  typedef is_same< it_to_type, end > no_match;
+private:
+  BOOST_MPL_ASSERT_MSG( ( mpl::not_< no_match >::value )
+                      , TYPE_HAS_NO_INTERLOCKED_SUPPORT
+                      , ()
+                      );
+public:
   typedef typename mpl::eval_if
-          < match
-          , mpl::deref< it_to_type >
+          < no_match
           , mpl::identity< mpl::void_ >
+          , mpl::deref< it_to_type >
           >
           ::type type;
 };
 
-template< bool Signed >
-struct int_type_sequence
-{
-  typedef typename mpl::if_c< Signed, int_types, uint_types >
-          ::type sequence;
-
-  typedef typename mpl::if_c< Signed
-                            , int_fast_types
-                            , uint_fast_types
-                            >
-                            ::type fast_sequence;
-};
+template< bool Signed, std::size_t Bytes >
+struct int_fast_t_impl
+  : int_finder_t_impl< typename mpl::if_c< Signed
+                                         , int_fast_types
+                                         , uint_fast_types
+                                         >
+                                         ::type
+                     , Bytes
+                     > {};
+
+template< typename LeftType, typename RightType >
+struct alignment_is_multiple_of_alignment_of
+  : mpl::equal_to< mpl::modulus< alignment_of< LeftType >
+                               , alignment_of< RightType >
+                               >
+                 , mpl::size_t< 0 >
+                 > {};
 
-template< bool Signed, std::size_t Bytes, bool PreferFast >
-struct int_t_impl
-{
-private:
-  typedef typename int_type_sequence< Signed >::sequence      sequence;
-  typedef typename int_type_sequence< Signed >::fast_sequence fast_sequence;
+template< typename Type >
+struct has_aligned_relative_raw
+  : alignment_is_multiple_of_alignment_of
+    < typename int_fast_t_impl< is_signed< Type >::value, sizeof( Type ) >::type
+    , Type
+    > {};
 
-  typedef detail::int_type_selector< fast_sequence, Bytes >
-          fast_selector;
+#define BOOST_ACT_INTERLOCKED_DETAIL_HAS_LEAST_TYPE_MACRO( r, type, elem )     \
+( ( sizeof( type ) * CHAR_BIT ) <= elem ) ||
 
-  typedef detail::int_type_selector< sequence, Bytes >
-          small_selector;
+template< typename Type >
+struct has_aligned_relative
+  : mpl::and_
+    <
+      mpl::bool_< ( BOOST_PP_SEQ_FOR_EACH
+                    ( BOOST_ACT_INTERLOCKED_DETAIL_HAS_LEAST_TYPE_MACRO
+                    , Type
+                    , BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_SEQ
+                    )
+                    false
+                  )
+                >
+    , has_aligned_relative_raw< Type >
+    > {};
 
-  typedef typename mpl::if_c< PreferFast, fast_selector, small_selector >
-          ::type pref_selector;
+#undef BOOST_ACT_INTERLOCKED_DETAIL_HAS_LEAST_TYPE_MACRO
 
-  typedef typename mpl::if_c< PreferFast, small_selector, fast_selector >
-          ::type fall_selector;
+typedef mpl::filter_view< int_least_types_all
+                        , has_aligned_relative< mpl::_1 >
+                        >
+                        int_least_types;
 
-  typedef typename pref_selector::match pref_match;
-  typedef typename fall_selector::match fall_match;
-public:
-  typedef typename mpl::eval_if
-          < pref_match
-          , pref_selector
-          , mpl::eval_if< fall_match
-                        , fall_selector
-                        , mpl::identity< mpl::void_ >
+typedef mpl::filter_view< uint_least_types_all
+                        , has_aligned_relative< mpl::_1 >
                         >
-          >
-          ::type type;
+                        uint_least_types;
+
+template< bool Signed, std::size_t Bytes >
+struct int_least_t_impl
+  : int_finder_t_impl< typename mpl::if_c< Signed
+                                         , int_least_types
+                                         , uint_least_types
+                                         >
+                                         ::type
+                     , Bytes
+                     > {};
+
+template< typename Type, typename Sequence >
+struct is_unaligned_interlocked_raw
+{
 private:
-  BOOST_MPL_ASSERT_MSG( ( mpl::not_< is_same< type, mpl::void_ > >::value )
-                      , TYPE_HAS_NO_INTERLOCKED_SUPPORT
-                      , ()
-                      );
+  typedef typename mpl::find_if
+          < Sequence
+          , mpl::and_< mpl::equal_to< mpl::sizeof_< mpl::_1 >
+                                    , typename mpl::sizeof_< Type >::type
+                                    >
+                     , mpl::equal_to< alignment_of< mpl::_1 >
+                                    , alignment_of< Type >
+                                    >
+                     >
+          >
+          ::type it_to_type;
+public:
+  typedef is_same< it_to_type, typename mpl::end< Sequence >::type > type;
 };
 
+
+template< typename Type >
+struct is_unaligned_interlocked
+  : is_unaligned_interlocked_raw< Type, typename mpl::if_< is_signed< Type >
+                                                         , int_fast_types
+                                                         , uint_fast_types
+                                                         >
+                                                         ::type
+                                >
+                                ::type {};
+
 }
 
-//  fast integers from least integers
 template< typename LeastInt >
 struct int_fast_t
 {
@@ -208,11 +251,9 @@
                       , ( LeastInt )
                       );
 public:
-  typedef typename detail::int_t_impl
-          <
-            is_signed< LeastInt >::value
+  typedef typename detail::int_fast_t_impl
+          < is_signed< LeastInt >::value
           , sizeof( LeastInt )
-          , true // Prefer fast over least
           >
           ::type fast;
 };
@@ -220,11 +261,9 @@
 template< std::size_t Bits >
 struct int_t
 {
-  typedef typename detail::int_t_impl
-          <
-            true // Signed
+  typedef typename detail::int_least_t_impl
+          < true // true == Signed
           , ( Bits / CHAR_BIT )
-          , false // Prefer least over fast
           >
           ::type least;
 
@@ -234,11 +273,9 @@
 template< std::size_t Bits >
 struct uint_t
 {
-  typedef typename detail::int_t_impl
-          <
-            false // Unsigned
+  typedef typename detail::int_least_t_impl
+          < false // false == Unsigned
           , ( Bits / CHAR_BIT )
-          , false // Prefer least over fast
           >
           ::type least;
 
@@ -247,22 +284,6 @@
 
 /*
 //  signed
-template< int Bits >
-struct int_t 
-{
-  typedef typename boost::int_t< Bits >::least least;
-  typedef typename int_fast_t< least >::fast fast;
-};
-
-//  unsigned
-template< int Bits >
-struct uint_t 
-{
-  typedef typename boost::uint_t< Bits >::least least;
-  typedef typename int_fast_t< least >::fast fast;
-};
-
-//  signed
 template< long MaxValue >
 struct int_max_value_t 
 {
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/lshift_assign/lshift_assign_acquire.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/lshift_assign/lshift_assign_acquire.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/lshift_assign/lshift_assign_acquire.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( lshift_assign, acquire, not_additive )
+( lshift_assign, acquire, <<, not_additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/lshift_assign/lshift_assign_release.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/lshift_assign/lshift_assign_release.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/lshift_assign/lshift_assign_release.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( lshift_assign, release, not_additive )
+( lshift_assign, release, <<, not_additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_acq_rel.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_acq_rel.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_acq_rel.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -33,21 +33,22 @@
 modify( TargetType& destination, OperationType operation )
 {
   typedef typename remove_cv< TargetType >::type unqualified_type;
-  unqualified_type new_value;
+  unqualified_type old_value = interlocked::load< acquire >( destination ),
+                   expected_value;
 
-  for( unqualified_type curr_value = interlocked::load< acquire >( destination )
-     ;    ( new_value = interlocked::assign_if_was< acq_rel >
-                        ( destination
-                        , operation( curr_value )
-                        , curr_value
-                        )
-          )
-       != curr_value
-     ; curr_value = new_value
-     );
+  do
+  {
+    expected_value = old_value;
 
-  // Note: new_value is the old value here
-  return new_value;
+    old_value = interlocked::assign_if_was< acq_rel >
+                ( destination
+                , operation( expected_value )
+                , expected_value
+                );
+  }
+  while( old_value != expected_value );
+
+  return old_value;
 }
 
 } } }
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_acquire.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_acquire.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_acquire.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -32,21 +32,22 @@
 modify( TargetType& destination, OperationType operation )
 {
   typedef typename remove_cv< TargetType >::type unqualified_type;
-  unqualified_type new_value;
+  unqualified_type old_value = interlocked::load< acquire >( destination ),
+                   expected_value;
 
-  for( unqualified_type curr_value = interlocked::load< acquire >( destination )
-     ;    ( new_value = interlocked::assign_if_was< acquire >
-                        ( destination
-                        , operation( curr_value )
-                        , curr_value
-                        )
-          )
-       != curr_value
-     ; curr_value = new_value
-     );
+  do
+  {
+    expected_value = old_value;
 
-  // Note: new_value is the old value here
-  return new_value;
+    old_value = interlocked::assign_if_was< acquire >
+                ( destination
+                , operation( expected_value )
+                , expected_value
+                );
+  }
+  while( old_value != expected_value );
+
+  return old_value;
 }
 
 } } }
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_release.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_release.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_release.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -33,21 +33,22 @@
 modify( TargetType& destination, OperationType operation )
 {
   typedef typename remove_cv< TargetType >::type unqualified_type;
-  unqualified_type new_value;
+  unqualified_type old_value = interlocked::load< unordered >( destination ),
+                   expected_value;
 
-  for( unqualified_type curr_value = interlocked::load< unordered >(destination)
-     ;    ( new_value = interlocked::assign_if_was< release >
-                        ( destination
-                        , operation( curr_value )
-                        , curr_value
-                        )
-          )
-       != curr_value
-     ; curr_value = new_value
-     );
+  do
+  {
+    expected_value = old_value;
 
-  // Note: new_value is the old value here
-  return new_value;
+    old_value = interlocked::assign_if_was< release >
+                ( destination
+                , operation( expected_value )
+                , expected_value
+                );
+  }
+  while( old_value != expected_value );
+
+  return old_value;
 }
 
 } } }
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_unordered.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_unordered.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_unordered.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -32,21 +32,22 @@
 modify( TargetType& destination, OperationType operation )
 {
   typedef typename remove_cv< TargetType >::type unqualified_type;
-  unqualified_type new_value;
+  unqualified_type old_value = interlocked::load< unordered >( destination ),
+                   expected_value;
 
-  for( unqualified_type curr_value = interlocked::load< unordered >(destination)
-     ;    ( new_value = interlocked::assign_if_was< unordered >
-                        ( destination
-                        , operation( curr_value )
-                        , curr_value
-                        )
-          )
-       != curr_value
-     ; curr_value = new_value
-     );
+  do
+  {
+    expected_value = old_value;
 
-  // Note: new_value is the old value here
-  return new_value;
+    old_value = interlocked::assign_if_was< unordered >
+                ( destination
+                , operation( expected_value )
+                , expected_value
+                );
+  }
+  while( old_value != expected_value );
+
+  return old_value;
 }
 
 } } }
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/rshift_assign/rshift_assign.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/rshift_assign/rshift_assign.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/rshift_assign/rshift_assign.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( rshift_assign, acq_rel, not_additive )
+( rshift_assign, acq_rel, >>, not_additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/rshift_assign/rshift_assign_acquire.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/rshift_assign/rshift_assign_acquire.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/rshift_assign/rshift_assign_acquire.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( rshift_assign, acquire, not_additive )
+( rshift_assign, acquire, >>, not_additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/rshift_assign/rshift_assign_release.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/rshift_assign/rshift_assign_release.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/rshift_assign/rshift_assign_release.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( rshift_assign, release, not_additive )
+( rshift_assign, release, >>, not_additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_acq_rel.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_acq_rel.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_acq_rel.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -16,7 +16,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( subtract_assign, acq_rel, additive )
+( subtract_assign, acq_rel, -, additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: 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.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_acquire.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -16,7 +16,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( subtract_assign, acquire, additive )
+( subtract_assign, acquire, -, additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: 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.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_release.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -16,7 +16,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( subtract_assign, release, additive )
+( subtract_assign, release, -, additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_unordered.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_unordered.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_unordered.hpp	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -16,7 +16,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( subtract_assign, unordered, additive )
+( subtract_assign, unordered, -, additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -10,6 +10,9 @@
 boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html
 boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html
 boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html
+boost_act/interlocked/interlocked_integer_models.html
+boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html
+boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html
 boost_act/interlocked/interlocked_support.html
 boost_act/interlocked/interlocked_support/checking_support.html
 boost_act/interlocked/interlocked_support/extending_support.html
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked.html	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -136,6 +136,28 @@
                     </dd>
                     <dt>
                       <span class="section">
+                        <a href="interlocked/interlocked_integer_models.html">Interlocked
+      Integer Models</a>
+                      </span>
+                    </dt>
+                    <dd>
+                      <dl>
+                        <dt>
+                          <span class="section">
+                            <a href="interlocked/interlocked_integer_models/interlocked_integer_typedefs.html">Interlocked
+        Integer Typedefs</a>
+                          </span>
+                        </dt>
+                        <dt>
+                          <span class="section">
+                            <a href="interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html">Interlocked
+        Integer Metafunctions</a>
+                          </span>
+                        </dt>
+                      </dl>
+                    </dd>
+                    <dt>
+                      <span class="section">
                         <a href="interlocked/interlocked_support.html">Interlocked
       Support</a>
                       </span>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.description"></a>
-            <h6><a id="id460555"></a>
+            <h6><a id="id460718"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.description">Description</a>
         </h6>
             <p>
@@ -145,7 +145,7 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.refinement_of"></a>
-            <h6><a id="id460765"></a>
+            <h6><a id="id460928"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.refinement_of">Refinement
           of</a>
         </h6>
@@ -154,7 +154,7 @@
           <code class="literal">Interlocked Natural Type</code></a>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.expression_requirements"></a>
-            <h6><a id="id460814"></a>
+            <h6><a id="id460977"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.expression_requirements">Expression
           Requirements</a>
         </h6>
@@ -206,7 +206,7 @@
               </div>
             </div>
             <div class="table">
-              <a id="id461026"></a>
+              <a id="id461193"></a>
               <p class="title">
                 <b>Table 6. Interlocked Arithmetic Type Requirements</b>
               </p>
@@ -305,6 +305,22 @@
                     <tr>
                       <td>
               <p>
+                <code class="computeroutput"><span class="identifier">negate_assign</span><span class="special">(</span>
+                <span class="identifier">i</span><span class="special">,</span>
+                <span class="identifier">c1</span> <span class="special">)</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">i</span> <span class="special">=</span>
+                <span class="special">-</span><span class="identifier">c1</span><span class="special">;</span></code> (ToDo: Only make this valid for
+                signed types)
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
                 <code class="computeroutput"><span class="identifier">subtract_assign</span><span class="special">(</span>
                 <span class="identifier">i</span><span class="special">,</span>
                 <span class="identifier">c1</span> <span class="special">)</span></code>
@@ -323,7 +339,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.headers"></a>
-            <h6><a id="id461549"></a>
+            <h6><a id="id461807"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.headers">Headers</a>
         </h6>
             <p>
@@ -335,10 +351,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id461570">
+                  <div class="style-switcher-box" id="id461828">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id461570',
+             'id461828',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -384,7 +400,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.example"></a>
-            <h6><a id="id462452"></a>
+            <h6><a id="id462710"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.example">Example</a>
         </h6>
             <p>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Type</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_arithmetic_type.html" title="Interlocked Arithmetic Type" /><link rel="next" href="../interlocked_support.html" title="Interlocked Support" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Type</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_arithmetic_type.html" title="Interlocked Arithmetic Type" /><link rel="next" href="../interlocked_integer_models.html" title="Interlocked Integer Models" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
       <script type="text/javascript" > <!--
          boostscript.init( new Array(
             boostscript.nested_links,
@@ -71,7 +71,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
-        <a accesskey="n" href="../interlocked_support.html">
+        <a accesskey="n" href="../interlocked_integer_models.html">
           <div class="next-icon"></div>
         </a>
       </div>
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.description"></a>
-            <h6><a id="id462507"></a>
+            <h6><a id="id462765"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.description">Description</a>
         </h6>
             <p>
@@ -145,7 +145,7 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.refinement_of"></a>
-            <h6><a id="id462727"></a>
+            <h6><a id="id462985"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.refinement_of">Refinement
           of</a>
         </h6>
@@ -154,7 +154,7 @@
           <code class="literal">Interlocked Arithmetic Type</code></a>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.expression_requirements"></a>
-            <h6><a id="id462775"></a>
+            <h6><a id="id463033"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.expression_requirements">Expression
           Requirements</a>
         </h6>
@@ -206,7 +206,7 @@
               </div>
             </div>
             <div class="table">
-              <a id="id462992"></a>
+              <a id="id463250"></a>
               <p class="title">
                 <b>Table 7. Interlocked Integer Type Requirements</b>
               </p>
@@ -341,7 +341,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.headers"></a>
-            <h6><a id="id463630"></a>
+            <h6><a id="id463889"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.headers">Headers</a>
         </h6>
             <p>
@@ -353,10 +353,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id463652">
+                  <div class="style-switcher-box" id="id463910">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id463652',
+             'id463910',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -377,7 +377,6 @@
 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_acq_rel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 
-
 <span class="comment">// Forward declarations.
 </span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
@@ -401,7 +400,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.example"></a>
-            <h6><a id="id464534"></a>
+            <h6><a id="id464792"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.example">Example</a>
         </h6>
             <p>
@@ -429,7 +428,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
-        <a accesskey="n" href="../interlocked_support.html">
+        <a accesskey="n" href="../interlocked_integer_models.html">
           <div class="next-icon"></div>
         </a>
       </div>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -115,6 +115,15 @@
                 <dt>
                   <span class="term">
                     <code class="computeroutput">
+                      <span class="identifier">IU</span>
+                    </code>
+                  </span>
+                </dt>
+                <dd><code class="computeroutput"><span class="identifier">remove_cv</span><span class="special"><</span><span class="identifier">I</span><span class="special">>::</span><span class="identifier">type</span></code>.
+          </dd>
+                <dt>
+                  <span class="term">
+                    <code class="computeroutput">
                       <span class="identifier">i</span>
                     </code>
                   </span>
@@ -162,10 +171,20 @@
                 <dd>
             A value of type <code class="computeroutput"><span class="identifier">C2</span> <span class="keyword">const</span><span class="special">&</span></code>.
           </dd>
+                <dt>
+                  <span class="term">
+                    <code class="computeroutput">
+                      <span class="identifier">f</span>
+                    </code>
+                  </span>
+                </dt>
+                <dd>
+            A unary function object (expression requirements below).
+          </dd>
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.refinement_of"></a>
-            <h6><a id="id459177"></a>
+            <h6><a id="id459246"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.refinement_of">Refinement
           of</a>
         </h6>
@@ -174,7 +193,7 @@
           <code class="literal">Interlocked Type</code></a>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.expression_requirements"></a>
-            <h6><a id="id459226"></a>
+            <h6><a id="id459295"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.expression_requirements">Expression
           Requirements</a>
         </h6>
@@ -223,12 +242,12 @@
               </div>
             </div>
             <div class="table">
-              <a id="id459426"></a>
+              <a id="id459495"></a>
               <p class="title">
-                <b>Table 5. Interlocked Arithmetic Type Requirements</b>
+                <b>Table 5. Interlocked Natural Type Requirements</b>
               </p>
               <div class="table-contents">
-                <table class="table" summary="Interlocked Arithmetic Type Requirements">
+                <table class="table" summary="Interlocked Natural Type Requirements">
                   <colgroup>
                     <col />
                     <col />
@@ -282,13 +301,29 @@
               </p>
               </td>
                     </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">modify</span><span class="special">(</span>
+                <span class="identifier">i</span><span class="special">,</span>
+                <span class="identifier">f</span> <span class="special">)</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">i</span> <span class="special">=</span>
+                <span class="identifier">f</span><span class="special">(</span>
+                <span class="identifier">i</span> <span class="special">);</span></code>
+              </p>
+              </td>
+                    </tr>
                   </tbody>
                 </table>
               </div>
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.headers"></a>
-            <h6><a id="id459691"></a>
+            <h6><a id="id459854"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.headers">Headers</a>
         </h6>
             <p>
@@ -300,10 +335,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id459712">
+                  <div class="style-switcher-box" id="id459876">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id459712',
+             'id459876',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -342,7 +377,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.example"></a>
-            <h6><a id="id460498"></a>
+            <h6><a id="id460662"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.example">Example</a>
         </h6>
             <p>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models.html	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Models</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type" /><link rel="next" href="interlocked_integer_models/interlocked_integer_typedefs.html" title="Interlocked Integer Typedefs" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
+      <script type="text/javascript" > <!--
+         boostscript.init( new Array(
+            boostscript.nested_links,
+            boostscript.style_switcher,
+            boostscript.common
+         ),
+         '../../../../doc/javascript'
+         );
+      //--></script>
+
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+             '../../../../doc/style/html/syntax.xml',
+             '../../../../doc/style/html'
+          );
+      //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+      //--></script>
+</head>
+  <body>
+    <div id="heading">
+      <div id="heading-placard"></div>
+      <div class="heading-navigation-box">
+        <div class="nested-links-select-box" id="chapters_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'chapters_select_box',
+            '../../../../doc/chapters.xml',
+            '../../../../libs');
+      //--></script>
+</div>
+        <div class="nested-links-select-box" id="sections_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'sections_select_box',
+            '../../sections.xml',
+            '../.././');
+      //--></script>
+</div>
+      </div>
+      <div class="search-box">
+        <form id="cref" action="http://google.com/cse">
+          <div class="search-box-label"></div>
+          <div>
+            <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+            <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+          </div>
+        </form>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_concepts/interlocked_integer_type.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_integer_models/interlocked_integer_typedefs.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="body">
+      <div id="body-inner">
+        <div id="content">
+          <div class="section">
+            <div class="titlepage">
+              <div>
+                <div>
+                  <h3 class="title"><a id="boost_act.interlocked.interlocked_integer_models"></a><a href="interlocked_integer_models.html" title="Interlocked Integer Models">Interlocked
+      Integer Models</a></h3>
+                </div>
+              </div>
+            </div>
+            <div class="toc">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <dl>
+                    <dt>
+                      <span class="section">
+                        <a href="interlocked_integer_models/interlocked_integer_typedefs.html">Interlocked
+        Integer Typedefs</a>
+                      </span>
+                    </dt>
+                    <dt>
+                      <span class="section">
+                        <a href="interlocked_integer_models/interlocked_integer_metafunctions.html">Interlocked
+        Integer Metafunctions</a>
+                      </span>
+                    </dt>
+                  </dl>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_concepts/interlocked_integer_type.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_integer_models/interlocked_integer_typedefs.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="footer">
+      <div id="footer-left">
+        <div id="copyright">
+          <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+        </div>
+        <div id="license">
+          <p>Distributed under the
+                  Boost Software License, Version 1.0.
+               </p>
+        </div>
+      </div>
+      <div id="footer-right">
+        <div id="banners">
+          <p id="banner-xhtml">
+            XHTML 1.0
+          </p>
+          <p id="banner-css">
+            CSS
+          </p>
+          <p id="banner-sourceforge">
+            SourceForge
+          </p>
+        </div>
+      </div>
+      <div class="clear"></div>
+    </div>
+  </body>
+</html>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -0,0 +1,544 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Metafunctions</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_integer_models.html" title="Interlocked Integer Models" /><link rel="prev" href="interlocked_integer_typedefs.html" title="Interlocked Integer Typedefs" /><link rel="next" href="../interlocked_support.html" title="Interlocked Support" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+      <script type="text/javascript" > <!--
+         boostscript.init( new Array(
+            boostscript.nested_links,
+            boostscript.style_switcher,
+            boostscript.common
+         ),
+         '../../../../../doc/javascript'
+         );
+      //--></script>
+
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+             '../../../../../doc/style/html/syntax.xml',
+             '../../../../../doc/style/html'
+          );
+      //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+      //--></script>
+</head>
+  <body>
+    <div id="heading">
+      <div id="heading-placard"></div>
+      <div class="heading-navigation-box">
+        <div class="nested-links-select-box" id="chapters_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'chapters_select_box',
+            '../../../../../doc/chapters.xml',
+            '../../../../../libs');
+      //--></script>
+</div>
+        <div class="nested-links-select-box" id="sections_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'sections_select_box',
+            '../../../sections.xml',
+            '../../.././');
+      //--></script>
+</div>
+      </div>
+      <div class="search-box">
+        <form id="cref" action="http://google.com/cse">
+          <div class="search-box-label"></div>
+          <div>
+            <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+            <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+          </div>
+        </form>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_integer_typedefs.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_integer_models.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="../interlocked_support.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="body">
+      <div id="body-inner">
+        <div id="content">
+          <div class="section">
+            <div class="titlepage">
+              <div>
+                <div>
+                  <h4 class="title"><a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions"></a><a href="interlocked_integer_metafunctions.html" title="Interlocked Integer Metafunctions">Interlocked
+        Integer Metafunctions</a></h4>
+                </div>
+              </div>
+            </div>
+            <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.description"></a>
+            <h6><a id="id465586"></a>
+          Description
+        </h6>
+            <p>
+          The templates listed in this section are used to select an <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+          <code class="literal">Interlocked Integer Type</code></a> based on number of bits,
+          min or max value, or to select a fast interlocked type based on the properties
+          of another integer type. Use and operation is similar to that of the templates
+          in <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> of the <code class="literal">Boost.Integer</code>
+          library (<span class="emphasis"><em>ToDo: insert link here</em></span>).
+        </p>
+            <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.header"></a>
+            <h6><a id="id465692"></a>
+          Header
+        </h6>
+            <p>
+          
+</p>
+            <div class="programlisting">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <div class="style-switcher-box" id="id465714">
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'insert_style_selector',
+             'id465714',
+             '../../../../../doc/style/html/syntax.xml',
+             '../../../../../doc/style/html'
+          );
+      //--></script>
+</div>
+                  <pre>
+<span class="comment">// Include all of the Boost.Act interlocked integer models.
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">integer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="comment">// Include just the information necessary for using the templates listed here,
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">selection</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+            <p>
+        </p>
+            <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.synopsis"></a>
+            <h6><a id="id465879"></a>
+          Synopsis
+        </h6>
+            <div class="programlisting">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <div class="style-switcher-box" id="id465899">
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'insert_style_selector',
+             'id465899',
+             '../../../../../doc/style/html/syntax.xml',
+             '../../../../../doc/style/html'
+          );
+      //--></script>
+</div>
+                  <pre>
+<span class="comment">// fast integers from least integers
+</span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">LeastInt</span> <span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">int_fast_t</span>
+<span class="special">{</span>
+  <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em> <span class="identifier">fast</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="comment">// signed
+</span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">int</span> <span class="identifier">Bits</span> <span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">int_t</span> 
+<span class="special">{</span>
+  <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em>   <span class="identifier">least</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="comment">// unsigned
+</span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">int</span> <span class="identifier">Bits</span> <span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">uint_t</span> 
+<span class="special">{</span>
+  <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em>   <span class="identifier">least</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="comment">// signed
+</span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">long</span> <span class="identifier">MaxValue</span> <span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">int_max_value_t</span> 
+<span class="special">{</span>
+  <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em>   <span class="identifier">least</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="comment">// signed
+</span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">long</span> <span class="identifier">MinValue</span> <span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">int_min_value_t</span> 
+<span class="special">{</span>
+  <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em>   <span class="identifier">least</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="comment">// unsigned
+</span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="identifier">Value</span> <span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">uint_value_t</span> 
+<span class="special">{</span>
+  <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em>   <span class="identifier">least</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+            <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.model_of"></a>
+            <h6><a id="id466648"></a>
+          <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.model_of">Model
+          of</a>
+        </h6>
+            <p>
+          Each type selected via these templates is an <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+          <code class="literal">Interlocked Integer Type</code></a>.
+        </p>
+            <div class="variablelist">
+              <p class="title">
+                <b>Notation</b>
+              </p>
+              <dl>
+                <dt>
+                  <span class="term">
+                    <code class="computeroutput">
+                      <span class="identifier">I</span>
+                    </code>
+                  </span>
+                </dt>
+                <dd>
+            An integer type.
+          </dd>
+                <dt>
+                  <span class="term">
+                    <code class="computeroutput">
+                      <span class="identifier">bits</span>
+                    </code>
+                  </span>
+                </dt>
+                <dd>
+            A compile-time constant <code class="computeroutput"><span class="keyword">int</span></code>
+            value.
+          </dd>
+                <dt>
+                  <span class="term">
+                    <code class="computeroutput">
+                      <span class="identifier">max</span>
+                    </code>
+                  </span>
+                </dt>
+                <dd>
+            A positive compile-time constant <code class="computeroutput"><span class="keyword">long</span></code>
+            value.
+          </dd>
+                <dt>
+                  <span class="term">
+                    <code class="computeroutput">
+                      <span class="identifier">min</span>
+                    </code>
+                  </span>
+                </dt>
+                <dd>
+            A negative compile-time constant <code class="computeroutput"><span class="keyword">long</span></code>
+            value.
+          </dd>
+                <dt>
+                  <span class="term">
+                    <code class="computeroutput">
+                      <span class="identifier">val</span>
+                    </code>
+                  </span>
+                </dt>
+                <dd>
+            A compile-time constant <code class="computeroutput"><span class="keyword">unsigned</span>
+            <span class="keyword">long</span></code> value.
+          </dd>
+              </dl>
+            </div>
+            <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.expression_semantics"></a>
+            <h6><a id="id466861"></a>
+          <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.expression_semantics">Expression
+          Semantics</a>
+        </h6>
+            <div class="table">
+              <a id="id466880"></a>
+              <p class="title">
+                <b>Table 8. Interlocked Integer Metafunction Requirements</b>
+              </p>
+              <div class="table-contents">
+                <table class="table" summary="Interlocked Integer Metafunction Requirements">
+                  <colgroup>
+                    <col />
+                    <col />
+                  </colgroup>
+                  <thead>
+                    <tr>
+                      <th>
+              <p>
+                Expression
+              </p>
+              </th>
+                      <th>
+              <p>
+                Pre/Post Condition
+              </p>
+              </th>
+                    </tr>
+                  </thead>
+                  <tbody>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">int_fast_t</span><span class="special"><</span>
+                <span class="identifier">I</span> <span class="special">>::</span><span class="identifier">fast</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                A fast interlocked integer type meeting at least the properties of
+                <code class="computeroutput"><span class="identifier">I</span></code>.
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">int_t</span><span class="special"><</span>
+                <span class="identifier">bits</span> <span class="special">>::</span><span class="identifier">least</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                The minimum sized signed <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+                <code class="literal">Interlocked Integer Type</code></a> with at least
+                <code class="computeroutput"><span class="identifier">bits</span></code> number of bits.
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">int_t</span><span class="special"><</span>
+                <span class="identifier">bits</span> <span class="special">>::</span><span class="identifier">fast</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                A fast signed <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+                <code class="literal">Interlocked Integer Type</code></a> with at least
+                <code class="computeroutput"><span class="identifier">bits</span></code> number of bits.
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">uint_t</span><span class="special"><</span>
+                <span class="identifier">bits</span> <span class="special">>::</span><span class="identifier">least</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                The minimum sized unsigned <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+                <code class="literal">Interlocked Integer Type</code></a> with at least
+                <code class="computeroutput"><span class="identifier">bits</span></code> number of bits.
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">uint_t</span><span class="special"><</span>
+                <span class="identifier">bits</span> <span class="special">>::</span><span class="identifier">fast</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                A fast unsigned <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+                <code class="literal">Interlocked Integer Type</code></a> with at least
+                <code class="computeroutput"><span class="identifier">bits</span></code> number of bits.
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">int_max_value_t</span><span class="special"><</span>
+                <span class="identifier">max</span> <span class="special">>::</span><span class="identifier">least</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                The minimum sized signed <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+                <code class="literal">Interlocked Integer Type</code></a> which can represent
+                a maximum value of <code class="computeroutput"><span class="identifier">max</span></code>.
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">int_max_value_t</span><span class="special"><</span>
+                <span class="identifier">max</span> <span class="special">>::</span><span class="identifier">fast</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                A fast signed <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+                <code class="literal">Interlocked Integer Type</code></a> which can represent
+                a maximum value of <code class="computeroutput"><span class="identifier">max</span></code>.
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">int_min_value_t</span><span class="special"><</span>
+                <span class="identifier">min</span> <span class="special">>::</span><span class="identifier">least</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                The minimum sized signed <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+                <code class="literal">Interlocked Integer Type</code></a> which can represent
+                a minimum value of <code class="computeroutput"><span class="identifier">min</span></code>.
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">int_min_value_t</span><span class="special"><</span>
+                <span class="identifier">min</span> <span class="special">>::</span><span class="identifier">fast</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                A fast signed <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+                <code class="literal">Interlocked Integer Type</code></a> which can represent
+                a minimum value of <code class="computeroutput"><span class="identifier">min</span></code>.
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">uint_value_t</span><span class="special"><</span>
+                <span class="identifier">val</span> <span class="special">>::</span><span class="identifier">least</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                The minimum sized unsigned <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+                <code class="literal">Interlocked Integer Type</code></a> which can represent
+                the value <code class="computeroutput"><span class="identifier">val</span></code>.
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">uint_value_t</span><span class="special"><</span>
+                <span class="identifier">val</span> <span class="special">>::</span><span class="identifier">fast</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                A fast unsigned <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+                <code class="literal">Interlocked Integer Type</code></a> which can represent
+                the value <code class="computeroutput"><span class="identifier">val</span></code>.
+              </p>
+              </td>
+                    </tr>
+                  </tbody>
+                </table>
+              </div>
+            </div>
+            <br class="table-break" />
+            <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.example"></a>
+            <h6><a id="id467791"></a>
+          Example
+        </h6>
+            <p>
+          ToDo: Insert example here
+        </p>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_integer_typedefs.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_integer_models.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="../interlocked_support.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="footer">
+      <div id="footer-left">
+        <div id="copyright">
+          <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+        </div>
+        <div id="license">
+          <p>Distributed under the
+                  Boost Software License, Version 1.0.
+               </p>
+        </div>
+      </div>
+      <div id="footer-right">
+        <div id="banners">
+          <p id="banner-xhtml">
+            XHTML 1.0
+          </p>
+          <p id="banner-css">
+            CSS
+          </p>
+          <p id="banner-sourceforge">
+            SourceForge
+          </p>
+        </div>
+      </div>
+      <div class="clear"></div>
+    </div>
+  </body>
+</html>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Typedefs</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_integer_models.html" title="Interlocked Integer Models" /><link rel="prev" href="../interlocked_integer_models.html" title="Interlocked Integer Models" /><link rel="next" href="interlocked_integer_metafunctions.html" title="Interlocked Integer Metafunctions" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+      <script type="text/javascript" > <!--
+         boostscript.init( new Array(
+            boostscript.nested_links,
+            boostscript.style_switcher,
+            boostscript.common
+         ),
+         '../../../../../doc/javascript'
+         );
+      //--></script>
+
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+             '../../../../../doc/style/html/syntax.xml',
+             '../../../../../doc/style/html'
+          );
+      //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+      //--></script>
+</head>
+  <body>
+    <div id="heading">
+      <div id="heading-placard"></div>
+      <div class="heading-navigation-box">
+        <div class="nested-links-select-box" id="chapters_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'chapters_select_box',
+            '../../../../../doc/chapters.xml',
+            '../../../../../libs');
+      //--></script>
+</div>
+        <div class="nested-links-select-box" id="sections_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'sections_select_box',
+            '../../../sections.xml',
+            '../../.././');
+      //--></script>
+</div>
+      </div>
+      <div class="search-box">
+        <form id="cref" action="http://google.com/cse">
+          <div class="search-box-label"></div>
+          <div>
+            <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+            <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+          </div>
+        </form>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="../interlocked_integer_models.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_integer_models.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_integer_metafunctions.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="body">
+      <div id="body-inner">
+        <div id="content">
+          <div class="section">
+            <div class="titlepage">
+              <div>
+                <div>
+                  <h4 class="title"><a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs"></a><a href="interlocked_integer_typedefs.html" title="Interlocked Integer Typedefs">Interlocked
+        Integer Typedefs</a></h4>
+                </div>
+              </div>
+            </div>
+            <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.description"></a>
+            <h6><a id="id464872"></a>
+          Description
+        </h6>
+            <p>
+          Types listed in this section are each a compliant <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+          <code class="literal">Interlocked Integer Type</code></a> whose sign, minimum
+          size and performance requirements are specified by their name.
+        </p>
+            <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.header"></a>
+            <h6><a id="id464923"></a>
+          Header
+        </h6>
+            <div class="programlisting">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <div class="style-switcher-box" id="id464943">
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'insert_style_selector',
+             'id464943',
+             '../../../../../doc/style/html/syntax.xml',
+             '../../../../../doc/style/html'
+          );
+      //--></script>
+</div>
+                  <pre>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">integer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">types</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+            <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.synopsis"></a>
+            <h6><a id="id465095"></a>
+          Synopsis
+        </h6>
+            <div class="programlisting">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <div class="style-switcher-box" id="id465114">
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'insert_style_selector',
+             'id465114',
+             '../../../../../doc/style/html/syntax.xml',
+             '../../../../../doc/style/html'
+          );
+      //--></script>
+</div>
+                  <pre>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">int_least8_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">int_fast8_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">uint_least8_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">uint_fast8_t</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">int_least16_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">int_fast16_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">uint_least16_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">uint_fast16_t</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">int_least32_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">int_fast32_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">uint_least32_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">uint_fast32_t</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">int_least64_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">int_fast64_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">uint_least64_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">uint_fast64_t</span><span class="special">;</span>
+</pre>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+            <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.model_of"></a>
+            <h6><a id="id465479"></a>
+          <a href="interlocked_integer_typedefs.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.model_of">Model
+          of</a>
+        </h6>
+            <p>
+          Each type mentioned above is an <a href="../interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type">
+          <code class="literal">Interlocked Integer Type</code></a>.
+        </p>
+            <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.example"></a>
+            <h6><a id="id465527"></a>
+          Example
+        </h6>
+            <p>
+          ToDo: Insert example here
+        </p>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="../interlocked_integer_models.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_integer_models.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_integer_metafunctions.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="footer">
+      <div id="footer-left">
+        <div id="copyright">
+          <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+        </div>
+        <div id="license">
+          <p>Distributed under the
+                  Boost Software License, Version 1.0.
+               </p>
+        </div>
+      </div>
+      <div id="footer-right">
+        <div id="banners">
+          <p id="banner-xhtml">
+            XHTML 1.0
+          </p>
+          <p id="banner-css">
+            CSS
+          </p>
+          <p id="banner-sourceforge">
+            SourceForge
+          </p>
+        </div>
+      </div>
+      <div class="clear"></div>
+    </div>
+  </body>
+</html>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support.html	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Support</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type" /><link rel="next" href="interlocked_support/checking_support.html" title="Checking Support" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Support</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_integer_models/interlocked_integer_metafunctions.html" title="Interlocked Integer Metafunctions" /><link rel="next" href="interlocked_support/checking_support.html" title="Checking Support" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
       <script type="text/javascript" > <!--
          boostscript.init( new Array(
             boostscript.nested_links,
@@ -56,7 +56,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
-        <a accesskey="p" href="interlocked_concepts/interlocked_integer_type.html">
+        <a accesskey="p" href="interlocked_integer_models/interlocked_integer_metafunctions.html">
           <div class="prev-icon"></div>
         </a>
       </div>
@@ -121,7 +121,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
-        <a accesskey="p" href="interlocked_concepts/interlocked_integer_type.html">
+        <a accesskey="p" href="interlocked_integer_models/interlocked_integer_metafunctions.html">
           <div class="prev-icon"></div>
         </a>
       </div>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_support.checking_support.description"></a>
-            <h6><a id="id464610"></a>
+            <h6><a id="id467867"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.description">Description</a>
         </h6>
             <p>
@@ -135,14 +135,14 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_support.checking_support.expression_requirements"></a>
-            <h6><a id="id464763"></a>
+            <h6><a id="id468022"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.expression_requirements">Expression
           Requirements</a>
         </h6>
             <div class="table">
-              <a id="id464781"></a>
+              <a id="id468040"></a>
               <p class="title">
-                <b>Table 8. Interlocked Operation Requirements</b>
+                <b>Table 9. Interlocked Operation Requirements</b>
               </p>
               <div class="table-contents">
                 <table class="table" summary="Interlocked Operation Requirements">
@@ -185,7 +185,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_support.checking_support.headers"></a>
-            <h6><a id="id464916"></a>
+            <h6><a id="id468175"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.headers">Headers</a>
         </h6>
             <p>
@@ -197,10 +197,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id464936">
+                  <div class="style-switcher-box" id="id468195">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id464936',
+             'id468195',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -224,7 +224,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_support.checking_support.example"></a>
-            <h6><a id="id465044"></a>
+            <h6><a id="id468302"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.example">Example</a>
         </h6>
             <p>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -88,7 +88,7 @@
       decisions.
     </p>
             <a id="boost_act.rationale.interlocked_operation_names"></a>
-            <h4><a id="id465290"></a>
+            <h4><a id="id468550"></a>
       <a href="rationale.html#boost_act.rationale.interlocked_operation_names">Interlocked
       Operation Names</a>
     </h4>
@@ -131,7 +131,7 @@
       around, especially if you have a desirable alternative.
     </p>
             <a id="boost_act.rationale.policy_based_design"></a>
-            <h4><a id="id465490"></a>
+            <h4><a id="id468766"></a>
       <a href="rationale.html#boost_act.rationale.policy_based_design">Policy-Based Design</a>
     </h4>
             <p>
@@ -171,7 +171,7 @@
       design.
     </p>
             <a id="boost_act.rationale.actions_vs__futures"></a>
-            <h4><a id="id465842"></a>
+            <h4><a id="id468845"></a>
       <a href="rationale.html#boost_act.rationale.actions_vs__futures">Actions vs. Futures</a>
     </h4>
             <p>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -171,6 +171,28 @@
                         </dd>
                         <dt>
                           <span class="section">
+                            <a href="boost_act/interlocked/interlocked_integer_models.html">Interlocked
+      Integer Models</a>
+                          </span>
+                        </dt>
+                        <dd>
+                          <dl>
+                            <dt>
+                              <span class="section">
+                                <a href="boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html">Interlocked
+        Integer Typedefs</a>
+                              </span>
+                            </dt>
+                            <dt>
+                              <span class="section">
+                                <a href="boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html">Interlocked
+        Integer Metafunctions</a>
+                              </span>
+                            </dt>
+                          </dl>
+                        </dd>
+                        <dt>
+                          <span class="section">
                             <a href="boost_act/interlocked/interlocked_support.html">Interlocked
       Support</a>
                           </span>
@@ -219,7 +241,7 @@
     </div>
     <div id="footer">
       <div id="footer-left">
-        <div id="revised">Revised: July 02, 2007 at 16:55:42 GMT</div>
+        <div id="revised">Revised: July 08, 2007 at 01:21:02 GMT</div>
         <div id="copyright"></div>
         <div id="license">
           <p>Distributed under the
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -1,6 +1,7 @@
 [section Interlocked]
 
 [include interlocked/concepts.qbk]
+[include interlocked/integer_models.qbk]
 [include interlocked/support.qbk]
 
 [endsect]
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_arithmetic_type.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_arithmetic_type.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_arithmetic_type.qbk	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -42,6 +42,9 @@
 [[`divide_assign( i, c1 )`]   [`i /= c1;`]                                     ]
 [[`increment( i )`]           [`++i;`]                                         ]
 [[`multiply_assign( i, c1 )`] [`i *= c1;`]                                     ]
+[[`negate_assign( i, c1 )`]   [`i = -c1;` (ToDo: Only make this valid for signed
+                                                 types)
+                                         ]                                     ]
 [[`subtract_assign( i, c1 )`] [`i -= c1;`]                                     ]
 ]
 
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_natural_type.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_natural_type.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_natural_type.qbk	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -7,11 +7,13 @@
 
 [variablelist Notation
 [[`I`]            [An [concept Interlocked Arithmetic Type].]                  ]
+[[`IU`]           [`remove_cv<I>::type`.]                                      ]
 [[`i`]            [A value of type `I`.]                                       ]
 [[`C1`]           [A type which is convertible to `remove_cv<I>::type&`.]      ]
 [[`c1`]           [A value of type `C1 const&`.]                               ]
 [[`C2`]           [A type which is convertible to `remove_cv<I>::type&`.]      ]
 [[`c2`]           [A value of type `C2 const&`.]                               ]
+[[`f`]            [A unary function object (expression requirements below).]   ]
 ]
 
 [heading Refinement of]
@@ -35,10 +37,11 @@
 `acq_rel` semantics.
 ]
 
-[table Interlocked Arithmetic Type Requirements
+[table Interlocked Natural Type Requirements
 [[Expression]                   [Operation (Returns Old Value)]                ]
 [[`assign( i, c1 )`]            [`i = c1;`]                                    ]
 [[`assign_if_was( i, c1, c2 )`] [`if( i == c2 ) i = c1;`]                      ]
+[[`modify( i, f )`]             [`i = f( i );`]                                ]
 ]
 
 [heading Headers]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models.qbk	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -0,0 +1,6 @@
+[section Interlocked Integer Models]
+
+[include integer_models/typedefs.qbk]
+[include integer_models/metafunctions.qbk]
+
+[endsect]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/metafunctions.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/metafunctions.qbk	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -0,0 +1,133 @@
+[section Interlocked Integer Metafunctions]
+
+[heading Description]
+
+The templates listed in this section are used to select an
+__interlocked_integer_type__ based on number of bits, min or max value, or
+to select a fast interlocked type based on the properties of another integer
+type. Use and operation is similar to that of the templates in
+`<boost/integer.hpp>` of the =Boost.Integer= library (/ToDo: insert link here/).
+
+[heading Header]
+
+``
+  // Include all of the Boost.Act interlocked integer models.
+  #include <boost/act/interlocked/integer.hpp>
+  
+  // Include just the information necessary for using the templates listed here,
+  #include <boost/act/interlocked/integer/selection.hpp>
+``
+
+[heading Synopsis]
+
+  // fast integers from least integers
+  template< typename LeastInt >
+  struct int_fast_t
+  {
+    typedef ``[~implementation_supplied]`` fast;
+  };
+  
+  // signed
+  template< int Bits >
+  struct int_t 
+  {
+    typedef ``[~implementation_supplied]``   least;
+    typedef int_fast_t< least >::fast fast;
+  };
+  
+  // unsigned
+  template< int Bits >
+  struct uint_t 
+  {
+    typedef ``[~implementation_supplied]``   least;
+    typedef int_fast_t< least >::fast fast;
+  };
+  
+  // signed
+  template< long MaxValue >
+  struct int_max_value_t 
+  {
+    typedef ``[~implementation_supplied]``   least;
+    typedef int_fast_t< least >::fast fast;
+  };
+  
+  // signed
+  template< long MinValue >
+  struct int_min_value_t 
+  {
+    typedef ``[~implementation_supplied]``   least;
+    typedef int_fast_t< least >::fast fast;
+  };
+  
+  // unsigned
+  template< unsigned long Value >
+  struct uint_value_t 
+  {
+    typedef ``[~implementation_supplied]``   least;
+    typedef int_fast_t< least >::fast fast;
+  };
+
+[heading Model of]
+
+Each type selected via these templates is an __interlocked_integer_type__.
+
+[variablelist Notation
+[[`I`]    [An integer type.]                                                   ]
+[[`bits`] [A compile-time constant `int` value.]                               ]
+[[`max`]  [A positive compile-time constant `long` value.]                     ]
+[[`min`]  [A negative compile-time constant `long` value.]                     ]
+[[`val`]  [A compile-time constant `unsigned long` value.]                     ]
+]
+
+[heading Expression Semantics]
+
+[table Interlocked Integer Metafunction Requirements
+[[Expression]                      [Pre/Post Condition]                        ]
+[[`int_fast_t< I >::fast`]         [A fast interlocked integer type meeting at
+                                   least the properties of `I`.
+                                   ]                                           ]
+[[`int_t< bits >::least`]          [The minimum sized signed
+                                   __interlocked_integer_type__ with at least
+                                   `bits` number of bits.
+                                   ]                                           ]
+[[`int_t< bits >::fast`]           [A fast signed __interlocked_integer_type__
+                                   with at least `bits` number of bits.
+                                   ]                                           ]
+[[`uint_t< bits >::least`]         [The minimum sized unsigned
+                                   __interlocked_integer_type__ with at least
+                                   `bits` number of bits.
+                                   ]                                           ]
+[[`uint_t< bits >::fast`]          [A fast unsigned __interlocked_integer_type__
+                                   with at least `bits` number of bits.
+                                   ]                                           ]
+[[`int_max_value_t< max >::least`] [The minimum sized signed
+                                   __interlocked_integer_type__ which can
+                                   represent a maximum value of `max`.
+                                   ]                                           ]
+[[`int_max_value_t< max >::fast`]  [A fast signed
+                                   __interlocked_integer_type__ which can
+                                   represent a maximum value of `max`.
+                                   ]                                           ]
+[[`int_min_value_t< min >::least`] [The minimum sized signed
+                                   __interlocked_integer_type__ which can
+                                   represent a minimum value of `min`.
+                                   ]                                           ]
+[[`int_min_value_t< min >::fast`]  [A fast signed
+                                   __interlocked_integer_type__ which can
+                                   represent a minimum value of `min`.
+                                   ]                                           ]
+[[`uint_value_t< val >::least`]    [The minimum sized unsigned
+                                   __interlocked_integer_type__ which can
+                                   represent the value `val`.
+                                   ]                                           ]
+[[`uint_value_t< val >::fast`]     [A fast unsigned
+                                   __interlocked_integer_type__ which can
+                                   represent the value `val`.
+                                   ]                                           ]
+]
+
+[heading Example]
+
+ToDo: Insert example here
+
+[endsect]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/typedefs.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/typedefs.qbk	2007-07-07 21:27:51 EDT (Sat, 07 Jul 2007)
@@ -0,0 +1,45 @@
+[section Interlocked Integer Typedefs]
+
+[heading Description]
+
+Types listed in this section are each a compliant __interlocked_integer_type__
+whose sign, minimum size and performance requirements are specified by their
+name.
+
+[heading Header]
+
+  #include <boost/act/interlocked/integer.hpp>
+  
+  #include <boost/act/interlocked/integer/types.hpp>
+
+[heading Synopsis]
+
+  typedef ``[~unspecified-type]`` int_least8_t;
+  typedef ``[~unspecified-type]`` int_fast8_t;
+  typedef ``[~unspecified-type]`` uint_least8_t;
+  typedef ``[~unspecified-type]`` uint_fast8_t;
+  
+  typedef ``[~unspecified-type]`` int_least16_t;
+  typedef ``[~unspecified-type]`` int_fast16_t;
+  typedef ``[~unspecified-type]`` uint_least16_t;
+  typedef ``[~unspecified-type]`` uint_fast16_t;
+  
+  typedef ``[~unspecified-type]`` int_least32_t;
+  typedef ``[~unspecified-type]`` int_fast32_t;
+  typedef ``[~unspecified-type]`` uint_least32_t;
+  typedef ``[~unspecified-type]`` uint_fast32_t;
+  
+  typedef ``[~unspecified-type]`` int_least64_t;
+  typedef ``[~unspecified-type]`` int_fast64_t;
+  typedef ``[~unspecified-type]`` uint_least64_t;
+  typedef ``[~unspecified-type]`` uint_fast64_t;
+
+[heading Model of]
+
+Each type mentioned above is an __interlocked_integer_type__.
+
+[heading Example]
+
+ToDo: Insert example here
+
+[endsect]