Seastar
High performance C++ framework for concurrent servers
seastar
core
enum.hh
1
/*
2
* This file is open source software, licensed to you under the terms
3
* of the Apache License, Version 2.0 (the "License"). See the NOTICE file
4
* distributed with this work for additional information regarding copyright
5
* ownership. You may not use this file except in compliance with the License.
6
*
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing,
12
* software distributed under the License is distributed on an
13
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
* KIND, either express or implied. See the License for the
15
* specific language governing permissions and limitations
16
* under the License.
17
*/
18
/*
19
* Copyright (C) 2015 Cloudius Systems, Ltd.
20
*/
21
22
#pragma once
23
24
/*
25
* This header file defines a hash function for enum types, using the
26
* standard hash function of the underlying type (such as int). This makes
27
* it possible to inherit from this type to
28
*/
29
30
#ifndef SEASTAR_MODULE
31
#include <type_traits>
32
#include <functional>
33
#include <cstddef>
34
#include <seastar/util/modules.hh>
35
#endif
36
37
namespace
seastar
{
38
39
SEASTAR_MODULE_EXPORT
40
template
<
typename
T>
41
class
enum_hash
{
42
static_assert
(std::is_enum_v<T>,
"must be an enum"
);
43
public
:
44
std::size_t operator()(
const
T& e)
const
{
45
using
utype = std::underlying_type_t<T>;
46
return
std::hash<utype>()(
static_cast<
utype
>
(e));
47
}
48
};
49
50
}
seastar::enum_hash
Definition:
enum.hh:41
seastar
Seastar API namespace.
Definition:
abort_on_ebadf.hh:26
Generated by
1.9.4