/
usr
/
include
/
boost
/
interprocess
/
detail
/
/usr/include/boost/interprocess/detail
mkdir
upload
Name
Size
Mode
Actions
atomic.hpp
22036
0644
edit
dl
rm
cast_tags.hpp
959
0644
edit
dl
rm
config_begin.hpp
3210
0644
edit
dl
rm
config_end.hpp
564
0644
edit
dl
rm
config_external_begin.hpp
714
0644
edit
dl
rm
config_external_end.hpp
529
0644
edit
dl
rm
file_locking_helpers.hpp
7029
0644
edit
dl
rm
file_wrapper.hpp
6407
0644
edit
dl
rm
intermodule_singleton.hpp
1634
0644
edit
dl
rm
intermodule_singleton_common.hpp
20068
0644
edit
dl
rm
interprocess_tester.hpp
1028
0644
edit
dl
rm
intersegment_ptr.hpp
34301
0644
edit
dl
rm
in_place_interface.hpp
2284
0644
edit
dl
rm
managed_global_memory.hpp
4072
0644
edit
dl
rm
managed_memory_impl.hpp
30059
0644
edit
dl
rm
managed_multi_shared_memory.hpp
14744
0644
edit
dl
rm
managed_open_or_create_impl.hpp
15421
0644
edit
dl
rm
math_functions.hpp
2574
0644
edit
dl
rm
min_max.hpp
1147
0644
edit
dl
rm
move.hpp
879
0644
edit
dl
rm
mpl.hpp
2259
0644
edit
dl
rm
named_proxy.hpp
9950
0644
edit
dl
rm
nothrow.hpp
1199
0644
edit
dl
rm
os_file_functions.hpp
22434
0644
edit
dl
rm
os_thread_functions.hpp
17440
0644
edit
dl
rm
pointer_type.hpp
1890
0644
edit
dl
rm
portable_intermodule_singleton.hpp
11670
0644
edit
dl
rm
posix_time_types_wrk.hpp
1459
0644
edit
dl
rm
ptime_wrk.hpp
1195
0644
edit
dl
rm
robust_emulation.hpp
13020
0644
edit
dl
rm
segment_manager_helper.hpp
15325
0644
edit
dl
rm
shared_dir_helpers.hpp
6908
0644
edit
dl
rm
simple_swap.hpp
859
0644
edit
dl
rm
std_fwd.hpp
1708
0644
edit
dl
rm
transform_iterator.hpp
1283
0644
edit
dl
rm
type_traits.hpp
2901
0644
edit
dl
rm
utilities.hpp
5917
0644
edit
dl
rm
variadic_templates_tools.hpp
1115
0644
edit
dl
rm
win32_api.hpp
61466
0644
edit
dl
rm
windows_intermodule_singleton.hpp
10745
0644
edit
dl
rm
workaround.hpp
9135
0644
edit
dl
rm
xsi_shared_memory_file_wrapper.hpp
3144
0644
edit
dl
rm
Edit:
/usr/include/boost/interprocess/detail/math_functions.hpp
(2574B)
////////////////////////////////////////////////////////////////////////////// // // (C) Copyright Stephen Cleary 2000. // (C) Copyright Ion Gaztanaga 2007-2012. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/interprocess for documentation. // // This file is a slightly modified file from Boost.Pool // ////////////////////////////////////////////////////////////////////////////// #ifndef BOOST_INTERPROCESS_DETAIL_MATH_FUNCTIONS_HPP #define BOOST_INTERPROCESS_DETAIL_MATH_FUNCTIONS_HPP #ifndef BOOST_CONFIG_HPP # include <boost/config.hpp> #endif # #if defined(BOOST_HAS_PRAGMA_ONCE) # pragma once #endif #include <climits> #include <boost/static_assert.hpp> namespace boost { namespace interprocess { namespace ipcdetail { // Greatest common divisor and least common multiple // // gcd is an algorithm that calculates the greatest common divisor of two // integers, using Euclid's algorithm. // // Pre: A > 0 && B > 0 // Recommended: A > B template <typename Integer> inline Integer gcd(Integer A, Integer B) { do { const Integer tmp(B); B = A % B; A = tmp; } while (B != 0); return A; } // // lcm is an algorithm that calculates the least common multiple of two // integers. // // Pre: A > 0 && B > 0 // Recommended: A > B template <typename Integer> inline Integer lcm(const Integer & A, const Integer & B) { Integer ret = A; ret /= gcd(A, B); ret *= B; return ret; } template <typename Integer> inline Integer log2_ceil(const Integer & A) { Integer i = 0; Integer power_of_2 = 1; while(power_of_2 < A){ power_of_2 <<= 1; ++i; } return i; } template <typename Integer> inline Integer upper_power_of_2(const Integer & A) { Integer power_of_2 = 1; while(power_of_2 < A){ power_of_2 <<= 1; } return power_of_2; } //This function uses binary search to discover the //highest set bit of the integer inline std::size_t floor_log2 (std::size_t x) { const std::size_t Bits = sizeof(std::size_t)*CHAR_BIT; const bool Size_t_Bits_Power_2= !(Bits & (Bits-1)); BOOST_STATIC_ASSERT(((Size_t_Bits_Power_2)== true)); std::size_t n = x; std::size_t log2 = 0; for(std::size_t shift = Bits >> 1; shift; shift >>= 1){ std::size_t tmp = n >> shift; if (tmp) log2 += shift, n = tmp; } return log2; } } // namespace ipcdetail } // namespace interprocess } // namespace boost #endif
Save
cmd:
run