#if !defined(phmap_fwd_decl_h_guard_) #define phmap_fwd_decl_h_guard_ // --------------------------------------------------------------------------- // Copyright (c) 2019, Gregory Popovitch - greg7mdp@gmail.com // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // --------------------------------------------------------------------------- #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable : 4514) // unreferenced inline function has been removed #pragma warning(disable : 4710) // function not inlined #pragma warning(disable : 4711) // selected for automatic inline expansion #endif #include #include #include #if defined(PHMAP_USE_ABSL_HASH) && !defined(ABSL_HASH_HASH_H_) namespace absl { template struct Hash; }; #endif namespace phmap { #if defined(PHMAP_USE_ABSL_HASH) template using Hash = ::absl::Hash; #else template struct Hash; #endif template struct EqualTo; template struct Less; template using Allocator = typename std::allocator; template using Pair = typename std::pair; class NullMutex; namespace priv { // The hash of an object of type T is computed by using phmap::Hash. template struct HashEq { using Hash = phmap::Hash; using Eq = phmap::EqualTo; }; template using hash_default_hash = typename priv::HashEq::Hash; template using hash_default_eq = typename priv::HashEq::Eq; // type alias for std::allocator so we can forward declare without including other headers template using Allocator = typename phmap::Allocator; // type alias for std::pair so we can forward declare without including other headers template using Pair = typename phmap::Pair; } // namespace priv // ------------- forward declarations for hash containers ---------------------------------- template , class Eq = phmap::priv::hash_default_eq, class Alloc = phmap::priv::Allocator> // alias for std::allocator class flat_hash_set; template , class Eq = phmap::priv::hash_default_eq, class Alloc = phmap::priv::Allocator< phmap::priv::Pair>> // alias for std::allocator class flat_hash_map; template , class Eq = phmap::priv::hash_default_eq, class Alloc = phmap::priv::Allocator> // alias for std::allocator class node_hash_set; template , class Eq = phmap::priv::hash_default_eq, class Alloc = phmap::priv::Allocator< phmap::priv::Pair>> // alias for std::allocator class node_hash_map; template , class Eq = phmap::priv::hash_default_eq, class Alloc = phmap::priv::Allocator, // alias for std::allocator size_t N = 4, // 2**N submaps class Mutex = phmap::NullMutex> // use std::mutex to enable internal locks class parallel_flat_hash_set; template , class Eq = phmap::priv::hash_default_eq, class Alloc = phmap::priv::Allocator< phmap::priv::Pair>, // alias for std::allocator size_t N = 4, // 2**N submaps class Mutex = phmap::NullMutex> // use std::mutex to enable internal locks class parallel_flat_hash_map; template , class Eq = phmap::priv::hash_default_eq, class Alloc = phmap::priv::Allocator, // alias for std::allocator size_t N = 4, // 2**N submaps class Mutex = phmap::NullMutex> // use std::mutex to enable internal locks class parallel_node_hash_set; template , class Eq = phmap::priv::hash_default_eq, class Alloc = phmap::priv::Allocator< phmap::priv::Pair>, // alias for std::allocator size_t N = 4, // 2**N submaps class Mutex = phmap::NullMutex> // use std::mutex to enable internal locks class parallel_node_hash_map; // ----------------------------------------------------------------------------- // phmap::parallel_*_hash_* using std::mutex by default // ----------------------------------------------------------------------------- template , class Eq = phmap::priv::hash_default_eq, class Alloc = phmap::priv::Allocator, size_t N = 4> using parallel_flat_hash_set_m = parallel_flat_hash_set; template , class Eq = phmap::priv::hash_default_eq, class Alloc = phmap::priv::Allocator>, size_t N = 4> using parallel_flat_hash_map_m = parallel_flat_hash_map; template , class Eq = phmap::priv::hash_default_eq, class Alloc = phmap::priv::Allocator, size_t N = 4> using parallel_node_hash_set_m = parallel_node_hash_set; template , class Eq = phmap::priv::hash_default_eq, class Alloc = phmap::priv::Allocator>, size_t N = 4> using parallel_node_hash_map_m = parallel_node_hash_map; // ------------- forward declarations for btree containers ---------------------------------- template , typename Alloc = phmap::Allocator> class btree_set; template , typename Alloc = phmap::Allocator> class btree_multiset; template , typename Alloc = phmap::Allocator>> class btree_map; template , typename Alloc = phmap::Allocator>> class btree_multimap; } // namespace phmap #ifdef _MSC_VER #pragma warning(pop) #endif #endif // phmap_fwd_decl_h_guard_