Boost logo

Boost-Commit :

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">&lt;</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">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
 
-
 <span class="comment">// Forward declarations.
 </span><span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">I</span><span class="special">&gt;::</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">&amp;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</span>
+
+<span class="comment">// Include just the information necessary for using the templates listed here,
+</span><span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</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">&lt;</span> <span class="keyword">typename</span> <span class="identifier">LeastInt</span> <span class="special">&gt;</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">&lt;</span> <span class="keyword">int</span> <span class="identifier">Bits</span> <span class="special">&gt;</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">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</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">&lt;</span> <span class="keyword">int</span> <span class="identifier">Bits</span> <span class="special">&gt;</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">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</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">&lt;</span> <span class="keyword">long</span> <span class="identifier">MaxValue</span> <span class="special">&gt;</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">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</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">&lt;</span> <span class="keyword">long</span> <span class="identifier">MinValue</span> <span class="special">&gt;</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">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</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">&lt;</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="identifier">Value</span> <span class="special">&gt;</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">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</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">&lt;</span>
+ <span class="identifier">I</span> <span class="special">&gt;::</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">&lt;</span>
+ <span class="identifier">bits</span> <span class="special">&gt;::</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">&lt;</span>
+ <span class="identifier">bits</span> <span class="special">&gt;::</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">&lt;</span>
+ <span class="identifier">bits</span> <span class="special">&gt;::</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">&lt;</span>
+ <span class="identifier">bits</span> <span class="special">&gt;::</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">&lt;</span>
+ <span class="identifier">max</span> <span class="special">&gt;::</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">&lt;</span>
+ <span class="identifier">max</span> <span class="special">&gt;::</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">&lt;</span>
+ <span class="identifier">min</span> <span class="special">&gt;::</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">&lt;</span>
+ <span class="identifier">min</span> <span class="special">&gt;::</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">&lt;</span>
+ <span class="identifier">val</span> <span class="special">&gt;::</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">&lt;</span>
+ <span class="identifier">val</span> <span class="special">&gt;::</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">&lt;</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">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</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]


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