summaryrefslogtreecommitdiff
path: root/src/third_party/boost-1.69.0/boost/align/detail/align.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/boost-1.69.0/boost/align/detail/align.hpp')
-rw-r--r--src/third_party/boost-1.69.0/boost/align/detail/align.hpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/third_party/boost-1.69.0/boost/align/detail/align.hpp b/src/third_party/boost-1.69.0/boost/align/detail/align.hpp
new file mode 100644
index 00000000000..905940ad77a
--- /dev/null
+++ b/src/third_party/boost-1.69.0/boost/align/detail/align.hpp
@@ -0,0 +1,38 @@
+/*
+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 <boost/align/detail/is_alignment.hpp>
+#include <boost/assert.hpp>
+
+namespace boost {
+namespace alignment {
+
+inline void*
+align(std::size_t alignment, std::size_t size, void*& ptr,
+ std::size_t& space)
+{
+ BOOST_ASSERT(detail::is_alignment(alignment));
+ if (size <= space) {
+ 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;
+ space = n;
+ return p;
+ }
+ }
+ return 0;
+}
+
+} /* alignment */
+} /* boost */
+
+#endif