Mercurial > hg > vamp-build-and-test
annotate DEPENDENCIES/generic/include/boost/align/detail/align.hpp @ 125:34e428693f5d vext
Vext -> Repoint
author | Chris Cannam |
---|---|
date | Thu, 14 Jun 2018 11:15:39 +0100 |
parents | f46d142149f5 |
children |
rev | line source |
---|---|
Chris@102 | 1 /* |
Chris@102 | 2 (c) 2014 Glen Joseph Fernandes |
Chris@102 | 3 glenjofe at gmail dot com |
Chris@102 | 4 |
Chris@102 | 5 Distributed under the Boost Software |
Chris@102 | 6 License, Version 1.0. |
Chris@102 | 7 http://boost.org/LICENSE_1_0.txt |
Chris@102 | 8 */ |
Chris@102 | 9 #ifndef BOOST_ALIGN_DETAIL_ALIGN_HPP |
Chris@102 | 10 #define BOOST_ALIGN_DETAIL_ALIGN_HPP |
Chris@102 | 11 |
Chris@102 | 12 #include <boost/assert.hpp> |
Chris@102 | 13 #include <boost/align/detail/address.hpp> |
Chris@102 | 14 #include <boost/align/detail/is_alignment.hpp> |
Chris@102 | 15 #include <cstddef> |
Chris@102 | 16 |
Chris@102 | 17 namespace boost { |
Chris@102 | 18 namespace alignment { |
Chris@102 | 19 inline void* align(std::size_t alignment, std::size_t size, |
Chris@102 | 20 void*& ptr, std::size_t& space) |
Chris@102 | 21 { |
Chris@102 | 22 BOOST_ASSERT(detail::is_alignment(alignment)); |
Chris@102 | 23 std::size_t n = detail::address_t(ptr) & (alignment - 1); |
Chris@102 | 24 if (n != 0) { |
Chris@102 | 25 n = alignment - n; |
Chris@102 | 26 } |
Chris@102 | 27 void* p = 0; |
Chris@102 | 28 if (n <= space && size <= space - n) { |
Chris@102 | 29 p = static_cast<char*>(ptr) + n; |
Chris@102 | 30 ptr = p; |
Chris@102 | 31 space -= n; |
Chris@102 | 32 } |
Chris@102 | 33 return p; |
Chris@102 | 34 } |
Chris@102 | 35 } |
Chris@102 | 36 } |
Chris@102 | 37 |
Chris@102 | 38 #endif |