Mercurial > hg > vamp-build-and-test
diff DEPENDENCIES/generic/include/boost/thread/barrier.hpp @ 101:c530137014c0
Update Boost headers (1.58.0)
author | Chris Cannam |
---|---|
date | Mon, 07 Sep 2015 11:12:49 +0100 |
parents | 2665513ce2d3 |
children |
line wrap: on
line diff
--- a/DEPENDENCIES/generic/include/boost/thread/barrier.hpp Fri Sep 04 12:01:02 2015 +0100 +++ b/DEPENDENCIES/generic/include/boost/thread/barrier.hpp Mon Sep 07 11:12:49 2015 +0100 @@ -1,6 +1,7 @@ // Copyright (C) 2002-2003 // David Moore, William E. Kempf // Copyright (C) 2007-8 Anthony Williams +// (C) Copyright 2013 Vicente J. Botet Escriba // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,14 +18,10 @@ #include <boost/thread/condition_variable.hpp> #include <string> #include <stdexcept> -#ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL -#include <boost/function.hpp> -#else -#include <functional> -#endif +#include <boost/thread/detail/nullary_function.hpp> #include <boost/type_traits/is_same.hpp> #include <boost/type_traits/is_void.hpp> -#include <boost/utility/enable_if.hpp> +#include <boost/core/enable_if.hpp> #include <boost/utility/result_of.hpp> #include <boost/config/abi_prefix.hpp> @@ -33,13 +30,8 @@ { namespace thread_detail { -#ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL - typedef function<void()> void_completion_function; - typedef function<size_t()> size_completion_function; -#else - typedef std::function<void()> void_completion_function; - typedef std::function<size_t()> size_completion_function; -#endif + typedef detail::nullary_function<void()> void_completion_function; + typedef detail::nullary_function<size_t()> size_completion_function; struct default_barrier_reseter { @@ -48,6 +40,18 @@ size_(size) { } + BOOST_THREAD_MOVABLE(default_barrier_reseter) + //BOOST_THREAD_COPYABLE_AND_MOVABLE(default_barrier_reseter) + + default_barrier_reseter(default_barrier_reseter const& other) BOOST_NOEXCEPT : + size_(other.size_) + { + } + default_barrier_reseter(BOOST_THREAD_RV_REF(default_barrier_reseter) other) BOOST_NOEXCEPT : + size_(BOOST_THREAD_RV(other).size_) + { + } + unsigned int operator()() { return size_; @@ -59,15 +63,27 @@ unsigned int size_; void_completion_function fct_; template <typename F> -#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL void_functor_barrier_reseter(unsigned int size, BOOST_THREAD_RV_REF(F) funct) : size_(size), fct_(boost::move(funct)) {} -#else - void_functor_barrier_reseter(unsigned int size, F funct) + template <typename F> + void_functor_barrier_reseter(unsigned int size, F& funct) : size_(size), fct_(funct) {} -#endif + + BOOST_THREAD_MOVABLE(void_functor_barrier_reseter) + //BOOST_THREAD_COPYABLE_AND_MOVABLE(void_functor_barrier_reseter) + + void_functor_barrier_reseter(void_functor_barrier_reseter const& other) BOOST_NOEXCEPT : + size_(other.size_), fct_(other.fct_) + { + } + void_functor_barrier_reseter(BOOST_THREAD_RV_REF(void_functor_barrier_reseter) other) BOOST_NOEXCEPT : + size_(BOOST_THREAD_RV(other).size_), fct_(BOOST_THREAD_RV(other).fct_) + //size_(BOOST_THREAD_RV(other).size_), fct_(boost::move(BOOST_THREAD_RV(other).fct_)) + { + } + unsigned int operator()() { fct_(); @@ -82,6 +98,17 @@ size_(size), fct_(funct) { } + BOOST_THREAD_MOVABLE(void_fct_ptr_barrier_reseter) + //BOOST_THREAD_COPYABLE_AND_MOVABLE(void_fct_ptr_barrier_reseter) + + void_fct_ptr_barrier_reseter(void_fct_ptr_barrier_reseter const& other) BOOST_NOEXCEPT : + size_(other.size_), fct_(other.fct_) + { + } + void_fct_ptr_barrier_reseter(BOOST_THREAD_RV_REF(void_fct_ptr_barrier_reseter) other) BOOST_NOEXCEPT : + size_(BOOST_THREAD_RV(other).size_), fct_(BOOST_THREAD_RV(other).fct_) + { + } unsigned int operator()() { fct_(); @@ -89,6 +116,10 @@ } }; } + //BOOST_THREAD_DCL_MOVABLE(thread_detail::default_barrier_reseter) + //BOOST_THREAD_DCL_MOVABLE(thread_detail::void_functor_barrier_reseter) + //BOOST_THREAD_DCL_MOVABLE(thread_detail::void_fct_ptr_barrier_reseter) + class barrier { static inline unsigned int check_counter(unsigned int count) @@ -105,31 +136,37 @@ BOOST_THREAD_NO_COPYABLE( barrier) explicit barrier(unsigned int count) : - m_count(check_counter(count)), m_generation(0), fct_(thread_detail::default_barrier_reseter(count)) + m_count(check_counter(count)), m_generation(0), fct_(BOOST_THREAD_MAKE_RV_REF(thread_detail::default_barrier_reseter(count))) { } template <typename F> barrier( unsigned int count, -#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL BOOST_THREAD_RV_REF(F) funct, -#else - F funct, -#endif typename enable_if< typename is_void<typename result_of<F>::type>::type, dummy* >::type=0 ) : m_count(check_counter(count)), - m_generation(0), - fct_(thread_detail::void_functor_barrier_reseter(count, -#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL - boost::move(funct) -#else - funct -#endif - ) + m_generation(0), + fct_(BOOST_THREAD_MAKE_RV_REF(thread_detail::void_functor_barrier_reseter(count, + boost::move(funct))) + ) + { + } + template <typename F> + barrier( + unsigned int count, + F &funct, + typename enable_if< + typename is_void<typename result_of<F>::type>::type, dummy* + >::type=0 + ) + : m_count(check_counter(count)), + m_generation(0), + fct_(BOOST_THREAD_MAKE_RV_REF(thread_detail::void_functor_barrier_reseter(count, + funct)) ) { } @@ -137,40 +174,43 @@ template <typename F> barrier( unsigned int count, -#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL BOOST_THREAD_RV_REF(F) funct, -#else - F funct, -#endif typename enable_if< typename is_same<typename result_of<F>::type, unsigned int>::type, dummy* >::type=0 ) : m_count(check_counter(count)), - m_generation(0), - fct_( -#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL - boost::move(funct) -#else - funct -#endif + m_generation(0), + fct_(boost::move(funct)) + { + } + template <typename F> + barrier( + unsigned int count, + F& funct, + typename enable_if< + typename is_same<typename result_of<F>::type, unsigned int>::type, dummy* + >::type=0 ) + : m_count(check_counter(count)), + m_generation(0), + fct_(funct) { } barrier(unsigned int count, void(*funct)()) : m_count(check_counter(count)), m_generation(0), fct_(funct - ? thread_detail::size_completion_function(thread_detail::void_fct_ptr_barrier_reseter(count, funct)) - : thread_detail::size_completion_function(thread_detail::default_barrier_reseter(count)) + ? BOOST_THREAD_MAKE_RV_REF(thread_detail::size_completion_function(BOOST_THREAD_MAKE_RV_REF(thread_detail::void_fct_ptr_barrier_reseter(count, funct)))) + : BOOST_THREAD_MAKE_RV_REF(thread_detail::size_completion_function(BOOST_THREAD_MAKE_RV_REF(thread_detail::default_barrier_reseter(count)))) ) { } barrier(unsigned int count, unsigned int(*funct)()) : m_count(check_counter(count)), m_generation(0), fct_(funct - ? thread_detail::size_completion_function(funct) - : thread_detail::size_completion_function(thread_detail::default_barrier_reseter(count)) + ? BOOST_THREAD_MAKE_RV_REF(thread_detail::size_completion_function(funct)) + : BOOST_THREAD_MAKE_RV_REF(thread_detail::size_completion_function(BOOST_THREAD_MAKE_RV_REF(thread_detail::default_barrier_reseter(count)))) ) { }