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