|
Boost-Commit : |
From: matt_calabrese_at_[hidden]
Date: 2007-06-29 02:44:59
Author: matt_calabrese
Date: 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
New Revision: 7311
URL: http://svn.boost.org/trac/boost/changeset/7311
Log:
Updated increment and decrement to use the new semantic forms via template arguments.
Added:
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acq_rel.hpp
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acq_rel_fwd.hpp
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_unordered.hpp
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_unordered_fwd.hpp
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_acq_rel_default
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_unordered_default
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_acq_rel_default
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_unordered_default
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acq_rel.hpp
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acq_rel_fwd.hpp
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_unordered.hpp
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_unordered_fwd.hpp
Properties modified:
sandbox/SOC/2006/concurrency/trunk/libs/act/ (props changed)
Text files modified:
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign.hpp | 1
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement.hpp | 2 +
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement.hpp | 45 +++++++++++++++++++++++++++++++++++++--
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_fwd.hpp | 39 ++++++++++++++++++++++++++++++++--
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_acquire_default | 2
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement_fwd.hpp | 2 +
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_dont_include.hpp | 9 +++++--
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_fwd_dont_include.hpp | 7 ++++-
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment.hpp | 2 +
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment.hpp | 45 +++++++++++++++++++++++++++++++++++++--
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acquire.hpp | 5 +--
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_fwd.hpp | 39 ++++++++++++++++++++++++++++++++--
sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment_fwd.hpp | 2 +
sandbox/SOC/2006/concurrency/trunk/boost/act/queue_policy/bounded_queue_policy/safe_single_push_pop_queue.hpp | 4 +-
sandbox/SOC/2006/concurrency/trunk/libs/act/test/consumer_policy_tester.hpp | 3 +
15 files changed, 182 insertions(+), 25 deletions(-)
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -36,7 +36,6 @@
return interlocked::add_assign< acq_rel >( destination, new_value );
}
-
template< typename Semantics, typename TargetType, typename SourceType >
typename lazy_enable_if
<
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -12,5 +12,7 @@
#include <boost/act/interlocked/decrement/decrement.hpp>
#include <boost/act/interlocked/decrement/decrement_acquire.hpp>
#include <boost/act/interlocked/decrement/decrement_release.hpp>
+#include <boost/act/interlocked/decrement/decrement_acq_rel.hpp>
+#include <boost/act/interlocked/decrement/decrement_unordered.hpp>
#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -9,10 +9,49 @@
#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_HPP
#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_HPP
-#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+#include <boost/act/config/interlocked/has.hpp>
-#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO ( decrement, acq_rel )
+#if BOOST_ACT_CONFIG_INTERLOCKED_HAS( add_assign, acq_rel )
-#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
+#include <boost/act/interlocked/semantics/default.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/act/interlocked/decrement/decrement_acq_rel.hpp>
+
+#include <boost/act/interlocked/detail/cas_support.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType, typename SourceType >
+typename lazy_enable_if
+<
+ detail::are_valid_store_style_params< TargetType >
+, remove_cv< TargetType >
+>
+::type
+decrement( TargetType& destination )
+{
+ return interlocked::decrement< acq_rel >( destination );
+}
+
+template< typename Semantics, typename TargetType, typename SourceType >
+typename lazy_enable_if
+<
+ mpl::and_< is_same< Semantics, default_ >
+ , detail::are_valid_store_style_params< TargetType >
+ >
+, remove_cv< TargetType >
+>
+::type
+decrement( TargetType& destination )
+{
+ return interlocked::decrement< acq_rel >( destination );
+}
+
+} } }
+
+#endif
#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acq_rel.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acq_rel.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_ACQ_REL_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_ACQ_REL_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO \
+( decrement, acq_rel )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acq_rel_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_acq_rel_fwd.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_ACQ_REL_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_ACQ_REL_FWD_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO \
+( decrement, acq_rel )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_fwd.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_fwd.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -9,10 +9,43 @@
#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_FWD_HPP
#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_FWD_HPP
-#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+#include <boost/act/config/interlocked/has.hpp>
-#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO ( decrement, acq_rel )
+#if BOOST_ACT_CONFIG_INTERLOCKED_HAS( decrement, acq_rel )
-#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()
+#include <boost/act/interlocked/semantics/default.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#include <boost/act/interlocked/detail/cas_support.hpp>
+
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType >
+typename lazy_enable_if
+<
+ detail::are_valid_store_style_params< TargetType >
+, remove_cv< TargetType >
+>
+::type
+decrement( TargetType& destination );
+
+template< typename Semantics, typename TargetType >
+typename lazy_enable_if
+<
+ mpl::and_< is_same< Semantics, default_ >
+ , detail::are_valid_store_style_params< TargetType >
+ >
+, remove_cv< TargetType >
+>
+::type
+decrement( TargetType& destination );
+
+} } }
+
+#endif
#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_unordered.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_unordered.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_UNORDERED_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_UNORDERED_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO \
+( decrement, unordered )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_unordered_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/decrement_unordered_fwd.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_UNORDERED_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DECREMENT_UNORDERED_FWD_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO \
+( decrement, unordered )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_acq_rel_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_acq_rel_default 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -0,0 +1,46 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DETAIL_DECREMENT_ACQ_REL_DEF_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DETAIL_DECREMENT_ACQ_REL_DEF_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_acq_rel.hpp>
+#include <boost/act/interlocked/load.hpp>
+#include <boost/act/detail/prior.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct decrement_acq_rel_default_impl
+{
+ template< typename TargetType >
+ static typename remove_cv< TargetType >::type execute( TargetType& target )
+ {
+ typedef typename remove_cv< TargetType >::type unqualified_type;
+
+ unqualified_type new_value;
+
+ for( unqualified_type curr_value = load( target )
+ ; ( new_value = assign_if_was< acq_rel >
+ ( target
+ , act::detail::prior( curr_value )
+ , curr_value
+ )
+ )
+ != curr_value
+ ; curr_value = new_value
+ );
+
+ // Note: new_value is old value here
+ return new_value;
+ }
+};
+
+} } } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_acquire_default
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_acquire_default (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_acquire_default 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -26,7 +26,7 @@
unqualified_type new_value;
for( unqualified_type curr_value = load( target )
- ; ( new_value = assign_if_was_acquire
+ ; ( new_value = assign_if_was< acquire >
( target
, act::detail::prior( curr_value )
, curr_value
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_unordered_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement/detail/decrement_unordered_default 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -0,0 +1,46 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_DECREMENT_DETAIL_DECREMENT_UN_DEF_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_DECREMENT_DETAIL_DECREMENT_UN_DEF_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_unordered.hpp>
+#include <boost/act/interlocked/load.hpp>
+#include <boost/act/detail/prior.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct decrement_unordered_default_impl
+{
+ template< typename TargetType >
+ static typename remove_cv< TargetType >::type execute( TargetType& target )
+ {
+ typedef typename remove_cv< TargetType >::type unqualified_type;
+
+ unqualified_type new_value;
+
+ for( unqualified_type curr_value = load( target )
+ ; ( new_value = assign_if_was< unordered >
+ ( target
+ , act::detail::prior( curr_value )
+ , curr_value
+ )
+ )
+ != curr_value
+ ; curr_value = new_value
+ );
+
+ // Note: new_value is old value here
+ return new_value;
+ }
+};
+
+} } } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement_fwd.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/decrement_fwd.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -12,5 +12,7 @@
#include <boost/act/interlocked/decrement/decrement_fwd.hpp>
#include <boost/act/interlocked/decrement/decrement_acquire_fwd.hpp>
#include <boost/act/interlocked/decrement/decrement_release_fwd.hpp>
+#include <boost/act/interlocked/decrement/decrement_acq_rel_fwd.hpp>
+#include <boost/act/interlocked/decrement/decrement_unordered_fwd.hpp>
#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_dont_include.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_dont_include.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_dont_include.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -22,6 +22,8 @@
#include <boost/mpl/if.hpp>
#include <boost/mpl/and.hpp>
#include <boost/mpl/not.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/act/interlocked/semantics.hpp>
#include <boost/type_traits/remove_volatile.hpp>
@@ -36,18 +38,19 @@
namespace boost { namespace act { namespace interlocked {
-template< typename TargetType >
+template< typename Semantics, typename TargetType >
typename lazy_enable_if
<
mpl::and_
<
- detail::are_valid_store_style_params< TargetType >
+ is_same< Semantics, BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SEMANTICS >
+ , detail::are_valid_store_style_params< TargetType >
, mpl::not_< detail::is_interlocked_bool< TargetType > >
>
, remove_cv< TargetType >
>
::type
-BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FULL_NAME( TargetType& target )
+BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_SHORT_NAME( TargetType& target )
{
return detail::impl_meta
<
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_fwd_dont_include.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_fwd_dont_include.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/unary_forwarder_fwd_dont_include.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -17,6 +17,8 @@
#include <boost/act/interlocked/detail/cas_support.hpp>
#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/act/interlocked/semantics.hpp>
#include <boost/mpl/and.hpp>
#include <boost/mpl/not.hpp>
@@ -35,13 +37,14 @@
<
mpl::and_
<
- detail::are_valid_store_style_params< TargetType >
+ is_same< Semantics, BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_SEMANTICS >
+ , detail::are_valid_store_style_params< TargetType >
, mpl::not_< detail::is_interlocked_bool< TargetType > >
>
, remove_cv< TargetType >
>
::type
-BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_FULL_NAME( TargetType& target );
+BOOST_ACT_INTERLOCKED_DETAIL_FORWARDER_FWD_SHORT_NAME( TargetType& target );
} } }
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -12,5 +12,7 @@
#include <boost/act/interlocked/increment/increment.hpp>
#include <boost/act/interlocked/increment/increment_acquire.hpp>
#include <boost/act/interlocked/increment/increment_release.hpp>
+#include <boost/act/interlocked/increment/increment_acq_rel.hpp>
+#include <boost/act/interlocked/increment/increment_unordered.hpp>
#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_acq_rel_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_acq_rel_default 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -0,0 +1,46 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_INCREMENT_DETAIL_INCREMENT_ACQ_REL_DEF_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_DETAIL_INCREMENT_ACQ_REL_DEF_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_acq_rel.hpp>
+#include <boost/act/interlocked/load.hpp>
+#include <boost/act/detail/next.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct increment_acq_rel_default_impl
+{
+ template< typename TargetType >
+ static typename remove_cv< TargetType >::type execute( TargetType& target )
+ {
+ typedef typename remove_cv< TargetType >::type unqualified_type;
+
+ unqualified_type new_value;
+
+ for( unqualified_type curr_value = load( target )
+ ; ( new_value = assign_if_was< acq_rel >
+ ( target
+ , act::detail::next( curr_value )
+ , curr_value
+ )
+ )
+ != curr_value
+ ; curr_value = new_value
+ );
+
+ // Note: new_value is old value here
+ return new_value;
+ }
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_unordered_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/detail/increment_unordered_default 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -0,0 +1,46 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_INCREMENT_DETAIL_INCREMENT_UN_DEF_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_DETAIL_INCREMENT_UN_DEF_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_unordered.hpp>
+#include <boost/act/interlocked/load.hpp>
+#include <boost/act/detail/next.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct increment_unordered_default_impl
+{
+ template< typename TargetType >
+ static typename remove_cv< TargetType >::type execute( TargetType& target )
+ {
+ typedef typename remove_cv< TargetType >::type unqualified_type;
+
+ unqualified_type new_value;
+
+ for( unqualified_type curr_value = load( target )
+ ; ( new_value = assign_if_was< unordered >
+ ( target
+ , act::detail::next( curr_value )
+ , curr_value
+ )
+ )
+ != curr_value
+ ; curr_value = new_value
+ );
+
+ // Note: new_value is old value here
+ return new_value;
+ }
+};
+
+} } } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -9,10 +9,49 @@
#ifndef BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_HPP
#define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_HPP
-#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+#include <boost/act/config/interlocked/has.hpp>
-#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO ( increment, acq_rel )
+#if BOOST_ACT_CONFIG_INTERLOCKED_HAS( add_assign, acq_rel )
-#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
+#include <boost/act/interlocked/semantics/default.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/act/interlocked/increment/increment_acq_rel.hpp>
+
+#include <boost/act/interlocked/detail/cas_support.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType, typename SourceType >
+typename lazy_enable_if
+<
+ detail::are_valid_store_style_params< TargetType >
+, remove_cv< TargetType >
+>
+::type
+increment( TargetType& destination )
+{
+ return interlocked::increment< acq_rel >( destination );
+}
+
+template< typename Semantics, typename TargetType, typename SourceType >
+typename lazy_enable_if
+<
+ mpl::and_< is_same< Semantics, default_ >
+ , detail::are_valid_store_style_params< TargetType >
+ >
+, remove_cv< TargetType >
+>
+::type
+increment( TargetType& destination )
+{
+ return interlocked::increment< acq_rel >( destination );
+}
+
+} } }
+
+#endif
#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acq_rel.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acq_rel.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_ACQ_REL_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_ACQ_REL_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO ( increment, acq_rel )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acq_rel_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acq_rel_fwd.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_ACQUIRE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_ACQUIRE_FWD_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO ( increment, acquire )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acquire.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acquire.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_acquire.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -6,8 +6,8 @@
http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
-#ifndef BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_ACQUIRE_HPP
-#define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_ACQUIRE_HPP
+#ifndef BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_ACQ_REL_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_ACQ_REL_HPP
#include <boost/act/interlocked/detail/unary_forwarder.hpp>
@@ -15,5 +15,4 @@
#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
-
#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_fwd.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_fwd.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -9,10 +9,43 @@
#ifndef BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_FWD_HPP
#define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_FWD_HPP
-#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+#include <boost/act/config/interlocked/has.hpp>
-#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO ( increment, acq_rel )
+#if BOOST_ACT_CONFIG_INTERLOCKED_HAS( increment, acq_rel )
-#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()
+#include <boost/act/interlocked/semantics/default.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#include <boost/act/interlocked/detail/cas_support.hpp>
+
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename TargetType >
+typename lazy_enable_if
+<
+ detail::are_valid_store_style_params< TargetType >
+, remove_cv< TargetType >
+>
+::type
+increment( TargetType& destination );
+
+template< typename Semantics, typename TargetType >
+typename lazy_enable_if
+<
+ mpl::and_< is_same< Semantics, default_ >
+ , detail::are_valid_store_style_params< TargetType >
+ >
+, remove_cv< TargetType >
+>
+::type
+increment( TargetType& destination );
+
+} } }
+
+#endif
#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_unordered.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_unordered.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_UNORDERED_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_UNORDERED_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_INFO ( increment, unordered )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_unordered_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment/increment_unordered_fwd.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_UNORDERED_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_INCREMENT_INCREMENT_UNORDERED_FWD_HPP
+
+#include <boost/act/interlocked/detail/unary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD_INFO ( increment, unordered )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_UNARY_FORWARDER_FWD()
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment_fwd.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/increment_fwd.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -12,5 +12,7 @@
#include <boost/act/interlocked/increment/increment_fwd.hpp>
#include <boost/act/interlocked/increment/increment_acquire_fwd.hpp>
#include <boost/act/interlocked/increment/increment_release_fwd.hpp>
+#include <boost/act/interlocked/increment/increment_acq_rel_fwd.hpp>
+#include <boost/act/interlocked/increment/increment_unordered_fwd.hpp>
#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/queue_policy/bounded_queue_policy/safe_single_push_pop_queue.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/queue_policy/bounded_queue_policy/safe_single_push_pop_queue.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/queue_policy/bounded_queue_policy/safe_single_push_pop_queue.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -128,7 +128,7 @@
factory.template apply< value_type >( end_m - 1 );
// Thread-safe incrememnt with release memory semantics.
- interlocked::increment_release( curr_size_m );
+ interlocked::increment< interlocked::release >( curr_size_m );
}
void pop()
@@ -142,7 +142,7 @@
begin_m = next( begin_m );
// Thread-safe decrement with release memory semantics.
- interlocked::decrement_release( curr_size_m );
+ interlocked::decrement< interlocked::release >( curr_size_m );
}
optional< value_type > value_pop()
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/test/consumer_policy_tester.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/test/consumer_policy_tester.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/consumer_policy_tester.hpp 2007-06-29 02:44:56 EDT (Fri, 29 Jun 2007)
@@ -66,7 +66,8 @@
boost::thread::sleep( time_of_completion );
- boost::act::interlocked::increment_acquire( target_m );
+ boost::act::interlocked::increment
+ < boost::act::interlocked::acquire >( target_m );
}
int operator ()( int value ) const
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