Dune Core Modules (2.8.0)

flatmultiindex.hh
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2// vi: set et ts=4 sw=2 sts=2:
3#ifndef DUNE_FUNCTIONS_FUNCTIONSPACEBASES_FLATMULTIINDEX_HH
4#define DUNE_FUNCTIONS_FUNCTIONSPACEBASES_FLATMULTIINDEX_HH
5
6#include <array>
7
8#include <dune/common/hash.hh>
9
10namespace Dune {
11namespace Functions {
12
13
14
30template<class size_type>
32 public std::array<size_type,1>
33{
34public:
35
36 constexpr FlatMultiIndex() = default;
37
47 FlatMultiIndex(std::initializer_list<size_type> const &l) :
48 std::array<size_type,1>{{*l.begin()}}
49 {}
50
56 operator const size_type& () const
57 {
58 return this->operator[](0);
59 }
60
66 operator size_type& ()
67 {
68 return this->operator[](0);
69 }
70
76 inline friend std::size_t hash_value(const FlatMultiIndex& arg) noexcept
77 {
78 return std::hash<size_type>()(arg);
79 }
80
81 static constexpr std::size_t max_size() { return 1; }
82};
83
84
85
86} // end namespace Functions
87} // end namespace Dune
88
90
91#endif // DUNE_FUNCTIONS_FUNCTIONSPACEBASES_FLATMULTIINDEX_HH
A multi-index class with only one level.
Definition: flatmultiindex.hh:33
FlatMultiIndex(std::initializer_list< size_type > const &l)
Construct from initializer_list.
Definition: flatmultiindex.hh:47
friend std::size_t hash_value(const FlatMultiIndex &arg) noexcept
Compute hash value for FlatMultiIndex.
Definition: flatmultiindex.hh:76
Support for calculating hash values of objects.
#define DUNE_DEFINE_HASH(template_args, type)
Defines the required struct specialization to make type hashable via Dune::hash.
Definition: hash.hh:98
#define DUNE_HASH_TYPE(...)
Wrapper macro for the type to be hashed in DUNE_DEFINE_HASH.
Definition: hash.hh:115
#define DUNE_HASH_TEMPLATE_ARGS(...)
Wrapper macro for the template arguments in DUNE_DEFINE_HASH.
Definition: hash.hh:107
Dune namespace.
Definition: alignedallocator.hh:11
STL namespace.
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Dec 22, 23:30, 2024)