summaryrefslogtreecommitdiff
path: root/boost/align
diff options
context:
space:
mode:
Diffstat (limited to 'boost/align')
-rw-r--r--boost/align/aligned_allocator.hpp6
-rw-r--r--boost/align/aligned_allocator_adaptor.hpp47
-rw-r--r--boost/align/detail/align.hpp4
-rw-r--r--boost/align/detail/align_down.hpp4
-rw-r--r--boost/align/detail/align_up.hpp4
-rw-r--r--boost/align/detail/alignment_of_msvc.hpp3
-rw-r--r--boost/align/detail/is_alignment.hpp1
7 files changed, 24 insertions, 45 deletions
diff --git a/boost/align/aligned_allocator.hpp b/boost/align/aligned_allocator.hpp
index 6d0f788952..6176bc27c0 100644
--- a/boost/align/aligned_allocator.hpp
+++ b/boost/align/aligned_allocator.hpp
@@ -28,8 +28,7 @@ namespace alignment {
template<class T, std::size_t Alignment>
class aligned_allocator {
- BOOST_STATIC_ASSERT(detail::
- is_alignment_constant<Alignment>::value);
+ BOOST_STATIC_ASSERT(detail::is_alignment_constant<Alignment>::value);
public:
typedef T value_type;
@@ -124,8 +123,7 @@ public:
template<std::size_t Alignment>
class aligned_allocator<void, Alignment> {
- BOOST_STATIC_ASSERT(detail::
- is_alignment_constant<Alignment>::value);
+ BOOST_STATIC_ASSERT(detail::is_alignment_constant<Alignment>::value);
public:
typedef void value_type;
diff --git a/boost/align/aligned_allocator_adaptor.hpp b/boost/align/aligned_allocator_adaptor.hpp
index 8905c215d3..c9fae1cf20 100644
--- a/boost/align/aligned_allocator_adaptor.hpp
+++ b/boost/align/aligned_allocator_adaptor.hpp
@@ -8,13 +8,13 @@ Distributed under the Boost Software License, Version 1.0.
#ifndef BOOST_ALIGN_ALIGNED_ALLOCATOR_ADAPTOR_HPP
#define BOOST_ALIGN_ALIGNED_ALLOCATOR_ADAPTOR_HPP
-#include <boost/align/detail/addressof.hpp>
#include <boost/align/detail/is_alignment_constant.hpp>
#include <boost/align/detail/max_align.hpp>
#include <boost/align/detail/max_size.hpp>
#include <boost/align/align.hpp>
#include <boost/align/aligned_allocator_adaptor_forward.hpp>
#include <boost/align/alignment_of.hpp>
+#include <boost/core/pointer_traits.hpp>
#include <boost/static_assert.hpp>
#include <new>
@@ -32,39 +32,25 @@ namespace alignment {
template<class Allocator, std::size_t Alignment>
class aligned_allocator_adaptor
: public Allocator {
- BOOST_STATIC_ASSERT(detail::
- is_alignment_constant<Alignment>::value);
+ BOOST_STATIC_ASSERT(detail::is_alignment_constant<Alignment>::value);
#if !defined(BOOST_NO_CXX11_ALLOCATOR)
typedef std::allocator_traits<Allocator> traits;
-
- typedef typename traits::
- template rebind_alloc<char> char_alloc;
-
- typedef typename traits::
- template rebind_traits<char> char_traits;
-
+ typedef typename traits::template rebind_alloc<char> char_alloc;
+ typedef typename traits::template rebind_traits<char> char_traits;
typedef typename char_traits::pointer char_ptr;
#else
- typedef typename Allocator::
- template rebind<char>::other char_alloc;
-
+ typedef typename Allocator::template rebind<char>::other char_alloc;
typedef typename char_alloc::pointer char_ptr;
#endif
public:
-#if !defined(BOOST_NO_CXX11_ALLOCATOR)
- typedef typename traits::value_type value_type;
- typedef typename traits::size_type size_type;
-#else
typedef typename Allocator::value_type value_type;
- typedef typename Allocator::size_type size_type;
-#endif
-
typedef value_type* pointer;
typedef const value_type* const_pointer;
typedef void* void_pointer;
typedef const void* const_void_pointer;
+ typedef std::size_t size_type;
typedef std::ptrdiff_t difference_type;
private:
@@ -77,11 +63,11 @@ public:
template<class U>
struct rebind {
#if !defined(BOOST_NO_CXX11_ALLOCATOR)
- typedef aligned_allocator_adaptor<typename traits::
- template rebind_alloc<U>, Alignment> other;
+ typedef aligned_allocator_adaptor<typename traits::template
+ rebind_alloc<U>, Alignment> other;
#else
- typedef aligned_allocator_adaptor<typename Allocator::
- template rebind<U>::other, Alignment> other;
+ typedef aligned_allocator_adaptor<typename Allocator::template
+ rebind<U>::other, Alignment> other;
#endif
};
@@ -120,10 +106,9 @@ public:
std::size_t n = s + min_align - 1;
char_alloc a(base());
char_ptr p = a.allocate(sizeof p + n);
- void* r = detail::addressof(*p) + sizeof p;
+ void* r = boost::pointer_traits<char_ptr>::to_address(p) + sizeof p;
(void)align(min_align, s, r, n);
- ::new(static_cast<void*>(static_cast<char_ptr*>(r)
- - 1)) char_ptr(p);
+ ::new(static_cast<void*>(static_cast<char_ptr*>(r) - 1)) char_ptr(p);
return static_cast<pointer>(r);
}
@@ -140,10 +125,9 @@ public:
#else
char_ptr p = a.allocate(sizeof p + n, h);
#endif
- void* r = detail::addressof(*p) + sizeof p;
+ void* r = boost::pointer_traits<char_ptr>::to_address(p) + sizeof p;
(void)align(min_align, s, r, n);
- ::new(static_cast<void*>(static_cast<char_ptr*>(r)
- - 1)) char_ptr(p);
+ ::new(static_cast<void*>(static_cast<char_ptr*>(r) - 1)) char_ptr(p);
return static_cast<pointer>(r);
}
@@ -152,8 +136,7 @@ public:
char_ptr r = *p;
p->~char_ptr();
char_alloc a(base());
- a.deallocate(r, sizeof r + size * sizeof(value_type) +
- min_align - 1);
+ a.deallocate(r, sizeof r + size * sizeof(value_type) + min_align - 1);
}
};
diff --git a/boost/align/detail/align.hpp b/boost/align/detail/align.hpp
index a58dcea747..905940ad77 100644
--- a/boost/align/detail/align.hpp
+++ b/boost/align/detail/align.hpp
@@ -20,8 +20,8 @@ align(std::size_t alignment, std::size_t size, void*& ptr,
{
BOOST_ASSERT(detail::is_alignment(alignment));
if (size <= space) {
- char* p = reinterpret_cast<char*>((reinterpret_cast<std::
- size_t>(ptr) + alignment - 1) & ~(alignment - 1));
+ char* p = reinterpret_cast<char*>(~(alignment - 1) &
+ (reinterpret_cast<std::size_t>(ptr) + alignment - 1));
std::size_t n = space - (p - static_cast<char*>(ptr));
if (size <= n) {
ptr = p;
diff --git a/boost/align/detail/align_down.hpp b/boost/align/detail/align_down.hpp
index 9a8c358c41..de3c80d06d 100644
--- a/boost/align/detail/align_down.hpp
+++ b/boost/align/detail/align_down.hpp
@@ -18,8 +18,8 @@ inline void*
align_down(void* ptr, std::size_t alignment) BOOST_NOEXCEPT
{
BOOST_ASSERT(detail::is_alignment(alignment));
- return reinterpret_cast<void*>(reinterpret_cast<std::
- size_t>(ptr) & ~(alignment - 1));
+ return reinterpret_cast<void*>(~(alignment - 1) &
+ reinterpret_cast<std::size_t>(ptr));
}
} /* alignment */
diff --git a/boost/align/detail/align_up.hpp b/boost/align/detail/align_up.hpp
index 86686da6ae..ac11f8964f 100644
--- a/boost/align/detail/align_up.hpp
+++ b/boost/align/detail/align_up.hpp
@@ -18,8 +18,8 @@ inline void*
align_up(void* ptr, std::size_t alignment) BOOST_NOEXCEPT
{
BOOST_ASSERT(detail::is_alignment(alignment));
- return reinterpret_cast<void*>((reinterpret_cast<std::
- size_t>(ptr) + alignment - 1) & ~(alignment - 1));
+ return reinterpret_cast<void*>(~(alignment - 1) &
+ (reinterpret_cast<std::size_t>(ptr) + alignment - 1));
}
} /* alignment */
diff --git a/boost/align/detail/alignment_of_msvc.hpp b/boost/align/detail/alignment_of_msvc.hpp
index 1526c7c296..440b840db4 100644
--- a/boost/align/detail/alignment_of_msvc.hpp
+++ b/boost/align/detail/alignment_of_msvc.hpp
@@ -23,8 +23,7 @@ struct offset_value {
template<class T>
struct alignment_of
- : min_size<sizeof(T),
- sizeof(offset_value<T>) - (sizeof(T) << 1)> { };
+ : min_size<sizeof(T), sizeof(offset_value<T>) - (sizeof(T) << 1)> { };
} /* detail */
} /* alignment */
diff --git a/boost/align/detail/is_alignment.hpp b/boost/align/detail/is_alignment.hpp
index 8bedba19c3..542fbe4694 100644
--- a/boost/align/detail/is_alignment.hpp
+++ b/boost/align/detail/is_alignment.hpp
@@ -4,7 +4,6 @@ Copyright 2014 Glen Joseph Fernandes
Distributed under the Boost Software License, Version 1.0.
(http://www.boost.org/LICENSE_1_0.txt)
-
*/
#ifndef BOOST_ALIGN_DETAIL_IS_ALIGNMENT_HPP
#define BOOST_ALIGN_DETAIL_IS_ALIGNMENT_HPP