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))))
       )
     {
     }