Refactor prime_fmod_size policy to use static members in lieu of namespace-scope ones

This commit is contained in:
Christian Mazakas
2023-09-27 11:44:45 -07:00
parent 968c2e9c11
commit 6c97eabbb3
3 changed files with 106 additions and 95 deletions
+10 -9
View File
@@ -64,8 +64,9 @@ void prime_sizes_test()
BOOST_TEST(!is_prime(100));
BOOST_TEST(!is_prime(49));
std::size_t const* sizes = boost::unordered::detail::prime_fmod_sizes;
std::size_t sizes_len = boost::unordered::detail::prime_fmod_size::sizes_len;
std::size_t const* sizes = boost::unordered::detail::prime_fmod_size<>::sizes;
std::size_t sizes_len =
boost::unordered::detail::prime_fmod_size<>::sizes_len;
// prove every number in our sizes array is prime
//
@@ -88,10 +89,10 @@ void prime_sizes_test()
// bits
//
boost::uint64_t const* inv_sizes32 =
boost::unordered::detail::prime_fmod_inv_sizes32;
boost::unordered::detail::prime_fmod_size<>::inv_sizes32;
std::size_t inv_sizes32_len =
boost::unordered::detail::prime_fmod_size::inv_sizes32_len;
boost::unordered::detail::prime_fmod_size<>::inv_sizes32_len;
std::size_t count = 0;
for (std::size_t i = 0; i < sizes_len; ++i) {
@@ -132,7 +133,7 @@ void get_remainder_test()
#if defined(BOOST_UNORDERED_FCA_HAS_64B_SIZE_T)
struct
{
// boost::unordered::detail::prime_fmod_size::get_remainder
// boost::unordered::detail::prime_fmod_size<>::get_remainder
// uses several internal implementations depending on the availability of
// certain intrinsics or 128 bit integer support, defaulting to a slow,
// portable routine. The following is a transcription of the portable
@@ -156,7 +157,7 @@ void get_remainder_test()
boost::uint32_t d = rng() & 0xffffffffu;
boost::uint64_t r1 =
boost::unordered::detail::prime_fmod_size::get_remainder(f, d);
boost::unordered::detail::prime_fmod_size<>::get_remainder(f, d);
boost::uint64_t r2 = get_remainder(f, d);
@@ -170,10 +171,10 @@ void get_remainder_test()
void modulo_test()
{
std::size_t const* sizes = boost::unordered::detail::prime_fmod_sizes;
std::size_t const* sizes = boost::unordered::detail::prime_fmod_size<>::sizes;
std::size_t const sizes_len =
boost::unordered::detail::prime_fmod_size::sizes_len;
boost::unordered::detail::prime_fmod_size<>::sizes_len;
boost::detail::splitmix64 rng;
@@ -189,7 +190,7 @@ void modulo_test()
}
#endif
std::size_t p1 =
boost::unordered::detail::prime_fmod_size::position(hash, j);
boost::unordered::detail::prime_fmod_size<>::position(hash, j);
std::size_t p2 = h % sizes[j];