Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-07-05 08:50:23

0001 /* Fast open-addressing concurrent hashmap.
0002  *
0003  * Copyright 2023 Christian Mazakas.
0004  * Copyright 2024 Braden Ganetsky.
0005  * Distributed under the Boost Software License, Version 1.0.
0006  * (See accompanying file LICENSE_1_0.txt or copy at
0007  * http://www.boost.org/LICENSE_1_0.txt)
0008  *
0009  * See https://www.boost.org/libs/unordered for library home page.
0010  */
0011 
0012 #ifndef BOOST_UNORDERED_CONCURRENT_FLAT_MAP_FWD_HPP
0013 #define BOOST_UNORDERED_CONCURRENT_FLAT_MAP_FWD_HPP
0014 
0015 #include <boost/config.hpp>
0016 #include <boost/container_hash/hash_fwd.hpp>
0017 
0018 #include <functional>
0019 #include <memory>
0020 
0021 #ifndef BOOST_NO_CXX17_HDR_MEMORY_RESOURCE
0022 #include <memory_resource>
0023 #endif
0024 
0025 namespace boost {
0026   namespace unordered {
0027 
0028     template <class Key, class T, class Hash = boost::hash<Key>,
0029       class Pred = std::equal_to<Key>,
0030       class Allocator = std::allocator<std::pair<Key const, T> > >
0031     class concurrent_flat_map;
0032 
0033     template <class Key, class T, class Hash, class KeyEqual, class Allocator>
0034     bool operator==(
0035       concurrent_flat_map<Key, T, Hash, KeyEqual, Allocator> const& lhs,
0036       concurrent_flat_map<Key, T, Hash, KeyEqual, Allocator> const& rhs);
0037 
0038     template <class Key, class T, class Hash, class KeyEqual, class Allocator>
0039     bool operator!=(
0040       concurrent_flat_map<Key, T, Hash, KeyEqual, Allocator> const& lhs,
0041       concurrent_flat_map<Key, T, Hash, KeyEqual, Allocator> const& rhs);
0042 
0043     template <class Key, class T, class Hash, class Pred, class Alloc>
0044     void swap(concurrent_flat_map<Key, T, Hash, Pred, Alloc>& x,
0045       concurrent_flat_map<Key, T, Hash, Pred, Alloc>& y)
0046       noexcept(noexcept(x.swap(y)));
0047 
0048     template <class K, class T, class H, class P, class A, class Predicate>
0049     typename concurrent_flat_map<K, T, H, P, A>::size_type erase_if(
0050       concurrent_flat_map<K, T, H, P, A>& c, Predicate pred);
0051 
0052 #ifndef BOOST_NO_CXX17_HDR_MEMORY_RESOURCE
0053     namespace pmr {
0054       template <class Key, class T, class Hash = boost::hash<Key>,
0055         class Pred = std::equal_to<Key> >
0056       using concurrent_flat_map = boost::unordered::concurrent_flat_map<Key, T,
0057         Hash, Pred, std::pmr::polymorphic_allocator<std::pair<Key const, T> > >;
0058     } // namespace pmr
0059 #endif
0060 
0061   } // namespace unordered
0062 
0063   using boost::unordered::concurrent_flat_map;
0064 } // namespace boost
0065 
0066 #endif // BOOST_UNORDERED_CONCURRENT_FLAT_MAP_HPP