#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 // --------------------------------------------------------------------------- namespace phmap { template struct Hash; template struct EqualTo; class NullMutex; namespace container_internal { // The hash of an object of type T is computed by using phmap::Hash. template struct HashEq { #ifdef PHMAP_USE_ABSL_HASHEQ using Hash = absl::Hash; using Eq = absl::EqualTo; #else using Hash = phmap::Hash; using Eq = phmap::EqualTo; #endif }; template using hash_default_hash = typename container_internal::HashEq::Hash; template using hash_default_eq = typename container_internal::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 container_internal template , class Eq = phmap::container_internal::hash_default_eq, class Alloc = phmap::container_internal::Allocator> class flat_hash_set; template , class Eq = phmap::container_internal::hash_default_eq, class Alloc = phmap::container_internal::Allocator< phmap::container_internal::Pair>> class flat_hash_map; template , class Eq = phmap::container_internal::hash_default_eq, class Alloc = phmap::container_internal::Allocator> class node_hash_set; template , class Eq = phmap::container_internal::hash_default_eq, class Alloc = phmap::container_internal::Allocator< phmap::container_internal::Pair>> class node_hash_map; template , class Eq = phmap::container_internal::hash_default_eq, class Alloc = phmap::container_internal::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::container_internal::hash_default_eq, class Alloc = phmap::container_internal::Allocator< phmap::container_internal::Pair>, 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::container_internal::hash_default_eq, class Alloc = phmap::container_internal::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::container_internal::hash_default_eq, class Alloc = phmap::container_internal::Allocator< phmap::container_internal::Pair>, size_t N = 4, // 2**N submaps class Mutex = phmap::NullMutex> // use std::mutex to enable internal locks class parallel_node_hash_map; } // namespace phmap #endif // phmap_fwd_decl_h_guard_