#ifndef ABSL_CONTAINER_INTERNAL_HASH_GENERATOR_TESTING_H_
#define ABSL_CONTAINER_INTERNAL_HASH_GENERATOR_TESTING_H_
#include <stdint.h>
#include <algorithm>
#include <cassert>
#include <iosfwd>
#include <random>
#include <tuple>
#include <type_traits>
#include <utility>
#include <vector>
#include "absl/container/internal/hash_policy_testing.h"
#include "absl/memory/memory.h"
#include "absl/meta/type_traits.h"
#include "absl/strings/string_view.h"
namespace absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
namespace hash_internal {
namespace generator_internal {
template <class Container, class = void>
struct IsMap : std::false_type { … };
IsMap<Map, absl::void_t<typename Map::mapped_type>>;
}
std::mt19937_64* GetSharedRng();
enum Enum { … };
enum class EnumClass : uint64_t { … };
inline std::ostream& operator<<(std::ostream& o, const EnumClass& ec) { … }
template <class T, class E = void>
struct Generator;
Generator<T, typename std::enable_if<std::is_integral<T>::value>::type>;
template <>
struct Generator<Enum> { … };
template <>
struct Generator<EnumClass> { … };
template <>
struct Generator<std::string> { … };
template <>
struct Generator<absl::string_view> { … };
template <>
struct Generator<NonStandardLayout> { … };
Generator<std::pair<K, V>>;
Generator<std::tuple<Ts...>>;
Generator<std::unique_ptr<T>>;
Generator<U, absl::void_t<decltype(std::declval<U &>().key()), decltype(std::declval<U &>().value())>>;
GeneratedType;
template <class T, size_t kMaxValues = 64, class E = void>
struct UniqueGenerator { … };
}
}
ABSL_NAMESPACE_END
}
#endif