#include <folly/Fingerprint.h>
#include <folly/Portability.h>
#include <folly/Utility.h>
#include <folly/detail/FingerprintPolynomial.h>
#include <utility>
namespace folly {
namespace detail {
namespace {
template <size_t Deg>
struct FingerprintTablePoly;
template <>
struct FingerprintTablePoly<63> { … };
template <>
struct FingerprintTablePoly<95> { … };
template <>
struct FingerprintTablePoly<127> { … };
template <typename D, size_t S0, size_t... I0>
constexpr auto copy_table(D const (&table)[S0], std::index_sequence<I0...>) { … }
template <typename D, size_t S0>
constexpr auto copy_table(D const (&table)[S0]) { … }
template <typename D, size_t S0, size_t S1, size_t... I0>
constexpr auto copy_table(
D const (&table)[S0][S1], std::index_sequence<I0...>) { … }
template <typename D, size_t S0, size_t S1>
constexpr auto copy_table(D const (&table)[S0][S1]) { … }
template <typename D, size_t S0, size_t S1, size_t S2, size_t... I0>
constexpr auto copy_table(
D const (&table)[S0][S1][S2], std::index_sequence<I0...>) { … }
template <typename D, size_t S0, size_t S1, size_t S2>
constexpr auto copy_table(D const (&table)[S0][S1][S2]) { … }
template <size_t Deg>
constexpr poly_table<Deg> make_poly_table() { … }
FOLLY_STORAGE_CONSTEXPR auto const poly_table_63 = …;
FOLLY_STORAGE_CONSTEXPR auto const poly_table_95 = …;
FOLLY_STORAGE_CONSTEXPR auto const poly_table_127 = …;
}
template <>
const uint64_t FingerprintTable<64>::poly[poly_size(64)] = …;
template <>
const uint64_t FingerprintTable<96>::poly[poly_size(96)] = …;
template <>
const uint64_t FingerprintTable<128>::poly[poly_size(128)] = …;
template <>
const poly_table<64> FingerprintTable<64>::table = …;
template <>
const poly_table<96> FingerprintTable<96>::table = …;
template <>
const poly_table<128> FingerprintTable<128>::table = …;
}
}