/usr/include/boost/align/detail
Edit: /usr/include/boost/align/detail/align.hpp (843B)
/*
Copyright 2014-2016 Glen Joseph Fernandes
(glenjofe@gmail.com)
Distributed under the Boost Software License, Version 1.0.
(http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_ALIGN_DETAIL_ALIGN_HPP
#define BOOST_ALIGN_DETAIL_ALIGN_HPP
#include
#include
namespace boost {
namespace alignment {
inline void*
align(std::size_t alignment, std::size_t size, void*& ptr,
std::size_t& space)
{
BOOST_ASSERT(boost::alignment::detail::is_alignment(alignment));
char* p = reinterpret_cast(~(alignment - 1) &
(reinterpret_cast(ptr) + alignment - 1));
std::size_t n = p - static_cast(ptr);
if (size + n <= space) {
ptr = p;
space -= n;
return p;
}
return 0;
}
} /* alignment */
} /* boost */
#endif