Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <boost/functional/hash.hpp>
7 : #include <pup.h>
8 :
9 : #include "DataStructures/FixedHashMap.hpp"
10 : #include "Domain/Structure/DirectionalId.hpp"
11 : #include "Domain/Structure/MaxNumberOfNeighbors.hpp"
12 :
13 : /// An optimized map with DirectionalId keys
14 : template <size_t Dim, typename T>
15 1 : class DirectionalIdMap : public FixedHashMap<maximum_number_of_neighbors(Dim),
16 : DirectionalId<Dim>, T> {
17 : public:
18 0 : using base =
19 : FixedHashMap<maximum_number_of_neighbors(Dim), DirectionalId<Dim>, T>;
20 : using base::base;
21 : };
22 :
23 : namespace PUP {
24 : template <size_t Dim, typename T>
25 : // NOLINTNEXTLINE(google-runtime-references)
26 : void pup(PUP::er& p, DirectionalIdMap<Dim, T>& t) {
27 : pup(p, static_cast<typename DirectionalIdMap<Dim, T>::base&>(t));
28 : }
29 :
30 : template <size_t Dim, typename T>
31 : // NOLINTNEXTLINE(google-runtime-references)
32 : void operator|(PUP::er& p, DirectionalIdMap<Dim, T>& t) {
33 : p | static_cast<typename DirectionalIdMap<Dim, T>::base&>(t);
34 : }
35 : } // namespace PUP
|