]> git.lyx.org Git - features.git/blob - 3rdparty/boost/boost/align/detail/align.hpp
Rerun extract.sh to get rid of more boost
[features.git] / 3rdparty / boost / boost / align / detail / align.hpp
1 /*
2 (c) 2014 Glen Joseph Fernandes
3 <glenjofe -at- gmail.com>
4
5 Distributed under the Boost Software
6 License, Version 1.0.
7 http://boost.org/LICENSE_1_0.txt
8 */
9 #ifndef BOOST_ALIGN_DETAIL_ALIGN_HPP
10 #define BOOST_ALIGN_DETAIL_ALIGN_HPP
11
12 #include <boost/align/detail/is_alignment.hpp>
13 #include <boost/assert.hpp>
14
15 namespace boost {
16 namespace alignment {
17
18 inline void* align(std::size_t alignment, std::size_t size,
19     void*& ptr, std::size_t& space)
20 {
21     BOOST_ASSERT(detail::is_alignment(alignment));
22     if (size <= space) {
23         char* p = reinterpret_cast<char*>((reinterpret_cast<std::
24             size_t>(ptr) + alignment - 1) & ~(alignment - 1));
25         std::ptrdiff_t n = p - static_cast<char*>(ptr);
26         if (size <= space - n) {
27             ptr = p;
28             space -= n;
29             return p;
30         }
31     }
32     return 0;
33 }
34
35 } /* .alignment */
36 } /* .boost */
37
38 #endif