gmsh-TingyuanDoc  0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
robin_hood.h File Reference
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <memory>
#include <stdexcept>
#include <string>
#include <type_traits>
#include <utility>
#include <limits>
Include dependency graph for robin_hood.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  robin_hood::ROBIN_HOOD_STD::alignment_of< T >
 
class  robin_hood::ROBIN_HOOD_STD::integer_sequence< T, Ints >
 
struct  robin_hood::ROBIN_HOOD_STD::detail_::IntSeqImpl< T, Begin, End, bool >
 
struct  robin_hood::ROBIN_HOOD_STD::detail_::IntSeqImpl< T, Begin, End, bool >::IntSeqCombiner< class, class >
 
struct  robin_hood::ROBIN_HOOD_STD::detail_::IntSeqImpl< T, Begin, End, bool >::IntSeqCombiner< integer_sequence< TValue, Inds0... >, integer_sequence< TValue, Inds1... > >
 
struct  robin_hood::ROBIN_HOOD_STD::detail_::IntSeqImpl< T, Begin, Begin, false >
 
struct  robin_hood::ROBIN_HOOD_STD::detail_::IntSeqImpl< T, Begin, End, true >
 
class  robin_hood::detail::BulkPoolAllocator< T, MinNumAllocs, MaxNumAllocs >
 
struct  robin_hood::detail::NodeAllocator< T, MinSize, MaxSize, IsFlat >
 
struct  robin_hood::detail::NodeAllocator< T, MinSize, MaxSize, true >
 
struct  robin_hood::detail::NodeAllocator< T, MinSize, MaxSize, false >
 
struct  robin_hood::detail::swappable::nothrow< T >
 
struct  robin_hood::is_transparent_tag
 
struct  robin_hood::pair< T1, T2 >
 
struct  robin_hood::hash< T, Enable >
 
struct  robin_hood::hash< std::basic_string< CharT > >
 
struct  robin_hood::hash< T * >
 
struct  robin_hood::hash< std::unique_ptr< T > >
 
struct  robin_hood::hash< std::shared_ptr< T > >
 
struct  robin_hood::hash< Enum, typename std::enable_if< std::is_enum< Enum >::value >::type >
 
struct  robin_hood::detail::void_type< T >
 
struct  robin_hood::detail::has_is_transparent< T, typename >
 
struct  robin_hood::detail::has_is_transparent< T, typename void_type< typename T::is_transparent >::type >
 
struct  robin_hood::detail::WrapHash< T >
 
struct  robin_hood::detail::WrapKeyEqual< T >
 
class  robin_hood::detail::Table< IsFlat, MaxLoadFactor100, Key, T, Hash, KeyEqual >
 
class  robin_hood::detail::Table< IsFlat, MaxLoadFactor100, Key, T, Hash, KeyEqual >::DataNode< M, bool >
 
class  robin_hood::detail::Table< IsFlat, MaxLoadFactor100, Key, T, Hash, KeyEqual >::DataNode< M, true >
 
class  robin_hood::detail::Table< IsFlat, MaxLoadFactor100, Key, T, Hash, KeyEqual >::DataNode< M, false >
 
struct  robin_hood::detail::Table< IsFlat, MaxLoadFactor100, Key, T, Hash, KeyEqual >::Cloner< M, UseMemcpy >
 
struct  robin_hood::detail::Table< IsFlat, MaxLoadFactor100, Key, T, Hash, KeyEqual >::Cloner< M, true >
 
struct  robin_hood::detail::Table< IsFlat, MaxLoadFactor100, Key, T, Hash, KeyEqual >::Cloner< M, false >
 
struct  robin_hood::detail::Table< IsFlat, MaxLoadFactor100, Key, T, Hash, KeyEqual >::Destroyer< M, IsFlatAndTrivial >
 
struct  robin_hood::detail::Table< IsFlat, MaxLoadFactor100, Key, T, Hash, KeyEqual >::Destroyer< M, true >
 
struct  robin_hood::detail::Table< IsFlat, MaxLoadFactor100, Key, T, Hash, KeyEqual >::Destroyer< M, false >
 
struct  robin_hood::detail::Table< IsFlat, MaxLoadFactor100, Key, T, Hash, KeyEqual >::fast_forward_tag
 
class  robin_hood::detail::Table< IsFlat, MaxLoadFactor100, Key, T, Hash, KeyEqual >::Iter< IsConst >
 

Namespaces

 robin_hood
 
 robin_hood::ROBIN_HOOD_STD
 
 robin_hood::ROBIN_HOOD_STD::detail_
 
 robin_hood::detail
 
 robin_hood::detail::swappable
 

Macros

#define ROBIN_HOOD_VERSION_MAJOR   3
 
#define ROBIN_HOOD_VERSION_MINOR   11
 
#define ROBIN_HOOD_VERSION_PATCH   1
 
#define ROBIN_HOOD_LOG(x)
 
#define ROBIN_HOOD_TRACE(x)
 
#define ROBIN_HOOD_COUNT(x)
 
#define ROBIN_HOOD(x)   ROBIN_HOOD_PRIVATE_DEFINITION_##x()
 
#define ROBIN_HOOD_UNUSED(identifier)
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_BITNESS()   32
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_LITTLE_ENDIAN()   (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_BIG_ENDIAN()   (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_NOINLINE()   __attribute__((noinline))
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_HAS_EXCEPTIONS()   0
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_CTZ()   __builtin_ctzl
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_CLZ()   __builtin_clzl
 
#define ROBIN_HOOD_COUNT_LEADING_ZEROES(x)   ((x) ? ROBIN_HOOD(CLZ)(x) : ROBIN_HOOD(BITNESS))
 
#define ROBIN_HOOD_COUNT_TRAILING_ZEROES(x)   ((x) ? ROBIN_HOOD(CTZ)(x) : ROBIN_HOOD(BITNESS))
 
#define __has_cpp_attribute(x)   0
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_FALLTHROUGH()
 
#define ROBIN_HOOD_LIKELY(condition)   __builtin_expect(condition, 1)
 
#define ROBIN_HOOD_UNLIKELY(condition)   __builtin_expect(condition, 0)
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_HAS_NATIVE_WCHART()   1
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_BROKEN_CONSTEXPR()   0
 
#define ROBIN_HOOD_IS_TRIVIALLY_COPYABLE(...)   std::is_trivially_copyable<__VA_ARGS__>::value
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_CXX()   __cplusplus
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_CXX98()   199711L
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_CXX11()   201103L
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_CXX14()   201402L
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_CXX17()   201703L
 
#define ROBIN_HOOD_PRIVATE_DEFINITION_NODISCARD()
 
#define ROBIN_HOOD_HASH_INT(T)
 

Typedefs

template<std::size_t... Inds>
using robin_hood::ROBIN_HOOD_STD::index_sequence = integer_sequence< std::size_t, Inds... >
 
template<class T , T N>
using robin_hood::ROBIN_HOOD_STD::make_integer_sequence = typename detail_::IntSeqImpl< T, 0, N,(N - 0)==1 >::TResult
 
template<std::size_t N>
using robin_hood::ROBIN_HOOD_STD::make_index_sequence = make_integer_sequence< std::size_t, N >
 
template<class... T>
using robin_hood::ROBIN_HOOD_STD::index_sequence_for = make_index_sequence< sizeof...(T)>
 
using robin_hood::detail::SizeT = uint32_t
 
template<typename Key , typename T , typename Hash = hash<Key>, typename KeyEqual = std::equal_to<Key>, size_t MaxLoadFactor100 = 80>
using robin_hood::unordered_flat_map = detail::Table< true, MaxLoadFactor100, Key, T, Hash, KeyEqual >
 
template<typename Key , typename T , typename Hash = hash<Key>, typename KeyEqual = std::equal_to<Key>, size_t MaxLoadFactor100 = 80>
using robin_hood::unordered_node_map = detail::Table< false, MaxLoadFactor100, Key, T, Hash, KeyEqual >
 
template<typename Key , typename T , typename Hash = hash<Key>, typename KeyEqual = std::equal_to<Key>, size_t MaxLoadFactor100 = 80>
using robin_hood::unordered_map = detail::Table< sizeof(robin_hood::pair< Key, T >)<=sizeof(size_t) *6 &&std::is_nothrow_move_constructible< robin_hood::pair< Key, T > >::value &&std::is_nothrow_move_assignable< robin_hood::pair< Key, T > >::value, MaxLoadFactor100, Key, T, Hash, KeyEqual >
 
template<typename Key , typename Hash = hash<Key>, typename KeyEqual = std::equal_to<Key>, size_t MaxLoadFactor100 = 80>
using robin_hood::unordered_flat_set = detail::Table< true, MaxLoadFactor100, Key, void, Hash, KeyEqual >
 
template<typename Key , typename Hash = hash<Key>, typename KeyEqual = std::equal_to<Key>, size_t MaxLoadFactor100 = 80>
using robin_hood::unordered_node_set = detail::Table< false, MaxLoadFactor100, Key, void, Hash, KeyEqual >
 
template<typename Key , typename Hash = hash<Key>, typename KeyEqual = std::equal_to<Key>, size_t MaxLoadFactor100 = 80>
using robin_hood::unordered_set = detail::Table< sizeof(Key)<=sizeof(size_t) *6 &&std::is_nothrow_move_constructible< Key >::value &&std::is_nothrow_move_assignable< Key >::value, MaxLoadFactor100, Key, void, Hash, KeyEqual >
 

Functions

template<typename T >
robin_hood::detail::rotr (T x, unsigned k)
 
template<typename T >
robin_hood::detail::reinterpret_cast_no_cast_align_warning (void *ptr) noexcept
 
template<typename T >
robin_hood::detail::reinterpret_cast_no_cast_align_warning (void const *ptr) noexcept
 
template<typename E , typename... Args>
 robin_hood::detail::ROBIN_HOOD (NOINLINE) void doThrow(Args &&... ROBIN_HOOD_UNUSED(args))
 
template<typename E , typename T , typename... Args>
T * robin_hood::detail::assertNotNull (T *t, Args &&... args)
 
template<typename T >
robin_hood::detail::unaligned_load (void const *ptr) noexcept
 
template<typename A , typename B >
void robin_hood::swap (pair< A, B > &a, pair< A, B > &b) noexcept(noexcept(std::declval< pair< A, B > & >().swap(std::declval< pair< A, B > & >())))
 
template<typename A , typename B >
constexpr bool robin_hood::operator== (pair< A, B > const &x, pair< A, B > const &y)
 
template<typename A , typename B >
constexpr bool robin_hood::operator!= (pair< A, B > const &x, pair< A, B > const &y)
 
template<typename A , typename B >
constexpr bool robin_hood::operator< (pair< A, B > const &x, pair< A, B > const &y) noexcept(noexcept(std::declval< A const & >()< std::declval< A const & >()) &&noexcept(std::declval< B const & >()< std::declval< B const & >()))
 
template<typename A , typename B >
constexpr bool robin_hood::operator> (pair< A, B > const &x, pair< A, B > const &y)
 
template<typename A , typename B >
constexpr bool robin_hood::operator<= (pair< A, B > const &x, pair< A, B > const &y)
 
template<typename A , typename B >
constexpr bool robin_hood::operator>= (pair< A, B > const &x, pair< A, B > const &y)
 
size_t robin_hood::hash_bytes (void const *ptr, size_t len) noexcept
 
size_t robin_hood::hash_int (uint64_t x) noexcept
 
 robin_hood::ROBIN_HOOD_HASH_INT (bool)
 
 robin_hood::ROBIN_HOOD_HASH_INT (char)
 
 robin_hood::ROBIN_HOOD_HASH_INT (signed char)
 
 robin_hood::ROBIN_HOOD_HASH_INT (unsigned char)
 
 robin_hood::ROBIN_HOOD_HASH_INT (char16_t)
 
 robin_hood::ROBIN_HOOD_HASH_INT (char32_t)
 
 robin_hood::ROBIN_HOOD_HASH_INT (wchar_t)
 
 robin_hood::ROBIN_HOOD_HASH_INT (short)
 
 robin_hood::ROBIN_HOOD_HASH_INT (unsigned short)
 
 robin_hood::ROBIN_HOOD_HASH_INT (int)
 
 robin_hood::ROBIN_HOOD_HASH_INT (unsigned int)
 
 robin_hood::ROBIN_HOOD_HASH_INT (long)
 
 robin_hood::ROBIN_HOOD_HASH_INT (long long)
 
 robin_hood::ROBIN_HOOD_HASH_INT (unsigned long)
 
 robin_hood::ROBIN_HOOD_HASH_INT (unsigned long long)
 

Macro Definition Documentation

◆ __has_cpp_attribute

#define __has_cpp_attribute (   x)    0

Definition at line 167 of file robin_hood.h.

◆ ROBIN_HOOD

#define ROBIN_HOOD (   x)    ROBIN_HOOD_PRIVATE_DEFINITION_##x()

Definition at line 98 of file robin_hood.h.

◆ ROBIN_HOOD_COUNT

#define ROBIN_HOOD_COUNT (   x)

Definition at line 93 of file robin_hood.h.

◆ ROBIN_HOOD_COUNT_LEADING_ZEROES

#define ROBIN_HOOD_COUNT_LEADING_ZEROES (   x)    ((x) ? ROBIN_HOOD(CLZ)(x) : ROBIN_HOOD(BITNESS))

Definition at line 160 of file robin_hood.h.

◆ ROBIN_HOOD_COUNT_TRAILING_ZEROES

#define ROBIN_HOOD_COUNT_TRAILING_ZEROES (   x)    ((x) ? ROBIN_HOOD(CTZ)(x) : ROBIN_HOOD(BITNESS))

Definition at line 161 of file robin_hood.h.

◆ ROBIN_HOOD_HASH_INT

#define ROBIN_HOOD_HASH_INT (   T)
Value:
template <> \
struct hash<T> { \
size_t operator()(T const& obj) const noexcept { \
return hash_int(static_cast<uint64_t>(obj)); \
} \
}

Definition at line 819 of file robin_hood.h.

◆ ROBIN_HOOD_IS_TRIVIALLY_COPYABLE

#define ROBIN_HOOD_IS_TRIVIALLY_COPYABLE (   ...)    std::is_trivially_copyable<__VA_ARGS__>::value

Definition at line 213 of file robin_hood.h.

◆ ROBIN_HOOD_LIKELY

#define ROBIN_HOOD_LIKELY (   condition)    __builtin_expect(condition, 1)

Definition at line 182 of file robin_hood.h.

◆ ROBIN_HOOD_LOG

#define ROBIN_HOOD_LOG (   x)

Definition at line 62 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_BIG_ENDIAN

#define ROBIN_HOOD_PRIVATE_DEFINITION_BIG_ENDIAN ( )    (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)

Definition at line 119 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_BITNESS

#define ROBIN_HOOD_PRIVATE_DEFINITION_BITNESS ( )    32

Definition at line 105 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_BROKEN_CONSTEXPR

#define ROBIN_HOOD_PRIVATE_DEFINITION_BROKEN_CONSTEXPR ( )    0

Definition at line 205 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_CLZ

#define ROBIN_HOOD_PRIVATE_DEFINITION_CLZ ( )    __builtin_clzl

Definition at line 155 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_CTZ

#define ROBIN_HOOD_PRIVATE_DEFINITION_CTZ ( )    __builtin_ctzl

Definition at line 154 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_CXX

#define ROBIN_HOOD_PRIVATE_DEFINITION_CXX ( )    __cplusplus

Definition at line 217 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_CXX11

#define ROBIN_HOOD_PRIVATE_DEFINITION_CXX11 ( )    201103L

Definition at line 219 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_CXX14

#define ROBIN_HOOD_PRIVATE_DEFINITION_CXX14 ( )    201402L

Definition at line 220 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_CXX17

#define ROBIN_HOOD_PRIVATE_DEFINITION_CXX17 ( )    201703L

Definition at line 221 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_CXX98

#define ROBIN_HOOD_PRIVATE_DEFINITION_CXX98 ( )    199711L

Definition at line 218 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_FALLTHROUGH

#define ROBIN_HOOD_PRIVATE_DEFINITION_FALLTHROUGH ( )

Definition at line 174 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_HAS_EXCEPTIONS

#define ROBIN_HOOD_PRIVATE_DEFINITION_HAS_EXCEPTIONS ( )    0

Definition at line 131 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_HAS_NATIVE_WCHART

#define ROBIN_HOOD_PRIVATE_DEFINITION_HAS_NATIVE_WCHART ( )    1

Definition at line 194 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_LITTLE_ENDIAN

#define ROBIN_HOOD_PRIVATE_DEFINITION_LITTLE_ENDIAN ( )    (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)

Definition at line 117 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_NODISCARD

#define ROBIN_HOOD_PRIVATE_DEFINITION_NODISCARD ( )

Definition at line 226 of file robin_hood.h.

◆ ROBIN_HOOD_PRIVATE_DEFINITION_NOINLINE

#define ROBIN_HOOD_PRIVATE_DEFINITION_NOINLINE ( )    __attribute__((noinline))

Definition at line 126 of file robin_hood.h.

◆ ROBIN_HOOD_TRACE

#define ROBIN_HOOD_TRACE (   x)

Definition at line 71 of file robin_hood.h.

◆ ROBIN_HOOD_UNLIKELY

#define ROBIN_HOOD_UNLIKELY (   condition)    __builtin_expect(condition, 0)

Definition at line 183 of file robin_hood.h.

◆ ROBIN_HOOD_UNUSED

#define ROBIN_HOOD_UNUSED (   identifier)

Definition at line 101 of file robin_hood.h.

◆ ROBIN_HOOD_VERSION_MAJOR

#define ROBIN_HOOD_VERSION_MAJOR   3

Definition at line 38 of file robin_hood.h.

◆ ROBIN_HOOD_VERSION_MINOR

#define ROBIN_HOOD_VERSION_MINOR   11

Definition at line 39 of file robin_hood.h.

◆ ROBIN_HOOD_VERSION_PATCH

#define ROBIN_HOOD_VERSION_PATCH   1

Definition at line 40 of file robin_hood.h.

robin_hood::hash_int
size_t hash_int(uint64_t x) noexcept
Definition: robin_hood.h:748