4#ifndef TETL_FUNCTIONAL_HASH_HPP
5#define TETL_FUNCTIONAL_HASH_HPP
7#include <etl/_bit/bit_cast.hpp>
8#include <etl/_cstddef/nullptr_t.hpp>
9#include <etl/_cstddef/size_t.hpp>
19 [[nodiscard]]
constexpr auto operator()(
bool val)
const noexcept ->
etl::size_t
21 return static_cast<
etl::size_t>(val);
27 [[nodiscard]]
constexpr auto operator()(
char val)
const noexcept ->
etl::size_t
29 return static_cast<
etl::size_t>(val);
34struct hash<
signed char> {
35 [[nodiscard]]
constexpr auto operator()(
signed char val)
const noexcept ->
etl::size_t
37 return static_cast<
etl::size_t>(val);
42struct hash<
unsigned char> {
43 [[nodiscard]]
constexpr auto operator()(
unsigned char val)
const noexcept ->
etl::size_t
45 return static_cast<
etl::size_t>(val);
51 [[nodiscard]]
constexpr auto operator()(
char8_t val)
const noexcept ->
etl::size_t
53 return static_cast<
etl::size_t>(val);
58struct hash<
char16_t> {
59 [[nodiscard]]
constexpr auto operator()(
char16_t val)
const noexcept ->
etl::size_t
61 return static_cast<
etl::size_t>(val);
66struct hash<
char32_t> {
67 [[nodiscard]]
constexpr auto operator()(
char32_t val)
const noexcept ->
etl::size_t
69 return static_cast<
etl::size_t>(val);
75 [[nodiscard]]
constexpr auto operator()(
wchar_t val)
const noexcept ->
etl::size_t
77 return static_cast<
etl::size_t>(val);
83 [[nodiscard]]
constexpr auto operator()(
short val)
const noexcept ->
etl::size_t
85 return static_cast<
etl::size_t>(val);
90struct hash<
unsigned short> {
91 [[nodiscard]]
constexpr auto operator()(
unsigned short val)
const noexcept ->
etl::size_t
93 return static_cast<
etl::size_t>(val);
99 [[nodiscard]]
constexpr auto operator()(
int val)
const noexcept ->
etl::size_t
101 return static_cast<
etl::size_t>(val);
106struct hash<
unsigned int> {
107 [[nodiscard]]
constexpr auto operator()(
unsigned int val)
const noexcept ->
etl::size_t
109 return static_cast<
etl::size_t>(val);
115 [[nodiscard]]
constexpr auto operator()(
long val)
const noexcept ->
etl::size_t
117 return static_cast<
etl::size_t>(val);
122struct hash<
long long> {
123 [[nodiscard]]
constexpr auto operator()(
long long val)
const noexcept ->
etl::size_t
125 return static_cast<
etl::size_t>(val);
130struct hash<
unsigned long> {
131 [[nodiscard]]
constexpr auto operator()(
unsigned long val)
const noexcept ->
etl::size_t
133 return static_cast<
etl::size_t>(val);
138struct hash<
unsigned long long> {
139 [[nodiscard]]
constexpr auto operator()(
unsigned long long val)
const noexcept ->
etl::size_t
141 return static_cast<
etl::size_t>(val);
147 [[nodiscard]]
constexpr auto operator()(
float val)
const noexcept ->
etl::size_t
149 return static_cast<
etl::size_t>(val);
155 [[nodiscard]]
constexpr auto operator()(
double val)
const noexcept ->
etl::size_t
157 return static_cast<
etl::size_t>(val);
162struct hash<
long double> {
163 [[nodiscard]]
constexpr auto operator()(
long double val)
const noexcept ->
etl::size_t
165 return static_cast<
etl::size_t>(val);
170struct hash<
etl::nullptr_t> {
171 [[nodiscard]]
constexpr auto operator()(nullptr_t )
const noexcept ->
etl::size_t
173 return static_cast<
etl::size_t>(0);
179 [[nodiscard]]
auto operator()(T* val)
const noexcept ->
etl::size_t
181 return etl::bit_cast<
etl::size_t>(val);
Definition adjacent_find.hpp:9
auto operator()(T *val) const noexcept -> etl::size_t
Definition hash.hpp:179
constexpr auto operator()(bool val) const noexcept -> etl::size_t
Definition hash.hpp:19
constexpr auto operator()(char16_t val) const noexcept -> etl::size_t
Definition hash.hpp:59
constexpr auto operator()(char32_t val) const noexcept -> etl::size_t
Definition hash.hpp:67
constexpr auto operator()(char8_t val) const noexcept -> etl::size_t
Definition hash.hpp:51
constexpr auto operator()(char val) const noexcept -> etl::size_t
Definition hash.hpp:27
constexpr auto operator()(double val) const noexcept -> etl::size_t
Definition hash.hpp:155
constexpr auto operator()(nullptr_t) const noexcept -> etl::size_t
Definition hash.hpp:171
constexpr auto operator()(float val) const noexcept -> etl::size_t
Definition hash.hpp:147
constexpr auto operator()(int val) const noexcept -> etl::size_t
Definition hash.hpp:99
constexpr auto operator()(long val) const noexcept -> etl::size_t
Definition hash.hpp:115
constexpr auto operator()(long double val) const noexcept -> etl::size_t
Definition hash.hpp:163
constexpr auto operator()(long long val) const noexcept -> etl::size_t
Definition hash.hpp:123
constexpr auto operator()(short val) const noexcept -> etl::size_t
Definition hash.hpp:83
constexpr auto operator()(signed char val) const noexcept -> etl::size_t
Definition hash.hpp:35
constexpr auto operator()(unsigned char val) const noexcept -> etl::size_t
Definition hash.hpp:43
constexpr auto operator()(unsigned int val) const noexcept -> etl::size_t
Definition hash.hpp:107
constexpr auto operator()(unsigned long val) const noexcept -> etl::size_t
Definition hash.hpp:131
constexpr auto operator()(unsigned long long val) const noexcept -> etl::size_t
Definition hash.hpp:139
constexpr auto operator()(unsigned short val) const noexcept -> etl::size_t
Definition hash.hpp:91
constexpr auto operator()(wchar_t val) const noexcept -> etl::size_t
Definition hash.hpp:75