update boost on linux

This commit is contained in:
Bassem Girgis
2019-08-10 16:06:25 -05:00
parent 76ad52be58
commit 861b918727
5363 changed files with 483306 additions and 116507 deletions

View File

@@ -17,12 +17,14 @@
#include <boost/assert.hpp>
#include <boost/static_assert.hpp>
#include <boost/utility.hpp>
#include <boost/next_prior.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/config.hpp> // for BOOST_LIKELY
#include <boost/type_traits/has_trivial_destructor.hpp>
#include <boost/type_traits/is_convertible.hpp>
#include <boost/lockfree/detail/allocator_rebind_helper.hpp>
#include <boost/lockfree/detail/atomic.hpp>
#include <boost/lockfree/detail/copy_payload.hpp>
#include <boost/lockfree/detail/parameter.hpp>
@@ -522,7 +524,12 @@ class runtime_sized_ringbuffer:
{
typedef std::size_t size_type;
size_type max_elements_;
#ifdef BOOST_NO_CXX11_ALLOCATOR
typedef typename Alloc::pointer pointer;
#else
typedef std::allocator_traits<Alloc> allocator_traits;
typedef typename allocator_traits::pointer pointer;
#endif
pointer array_;
protected:
@@ -535,20 +542,35 @@ public:
explicit runtime_sized_ringbuffer(size_type max_elements):
max_elements_(max_elements + 1)
{
#ifdef BOOST_NO_CXX11_ALLOCATOR
array_ = Alloc::allocate(max_elements_);
#else
Alloc& alloc = *this;
array_ = allocator_traits::allocate(alloc, max_elements_);
#endif
}
template <typename U>
runtime_sized_ringbuffer(typename Alloc::template rebind<U>::other const & alloc, size_type max_elements):
runtime_sized_ringbuffer(typename detail::allocator_rebind_helper<Alloc, U>::type const & alloc, size_type max_elements):
Alloc(alloc), max_elements_(max_elements + 1)
{
#ifdef BOOST_NO_CXX11_ALLOCATOR
array_ = Alloc::allocate(max_elements_);
#else
Alloc& allocator = *this;
array_ = allocator_traits::allocate(allocator, max_elements_);
#endif
}
runtime_sized_ringbuffer(Alloc const & alloc, size_type max_elements):
Alloc(alloc), max_elements_(max_elements + 1)
{
#ifdef BOOST_NO_CXX11_ALLOCATOR
array_ = Alloc::allocate(max_elements_);
#else
Alloc& allocator = *this;
array_ = allocator_traits::allocate(allocator, max_elements_);
#endif
}
~runtime_sized_ringbuffer(void)
@@ -557,7 +579,12 @@ public:
T out;
while (pop(&out, 1)) {}
#ifdef BOOST_NO_CXX11_ALLOCATOR
Alloc::deallocate(array_, max_elements_);
#else
Alloc& allocator = *this;
allocator_traits::deallocate(allocator, array_, max_elements_);
#endif
}
bool push(T const & t)
@@ -729,7 +756,7 @@ public:
}
template <typename U>
explicit spsc_queue(typename allocator::template rebind<U>::other const &)
explicit spsc_queue(typename detail::allocator_rebind_helper<allocator, U>::type const &)
{
// just for API compatibility: we don't actually need an allocator
BOOST_STATIC_ASSERT(!runtime_sized);
@@ -755,7 +782,7 @@ public:
}
template <typename U>
spsc_queue(size_type element_count, typename allocator::template rebind<U>::other const & alloc):
spsc_queue(size_type element_count, typename detail::allocator_rebind_helper<allocator, U>::type const & alloc):
base_type(alloc, element_count)
{
BOOST_STATIC_ASSERT(runtime_sized);