Remove building with NOCRYPTO option
[minix.git] / external / bsd / libc++ / dist / libcxx / include / ext / __hash
blob5675d54055e02486e26ce4f5fa9944f123bfa8da
1 // -*- C++ -*-
2 //===------------------------- hash_set ------------------------------------===//
3 //
4 //                     The LLVM Compiler Infrastructure
5 //
6 // This file is dual licensed under the MIT and the University of Illinois Open
7 // Source Licenses. See LICENSE.TXT for details.
8 //
9 //===----------------------------------------------------------------------===//
11 #ifndef _LIBCPP_EXT_HASH
12 #define _LIBCPP_EXT_HASH
14 #pragma GCC system_header
16 #include <string>
17 #include <cstring>
19 namespace __gnu_cxx {
20 using namespace std;
22 template <typename _Tp> struct _LIBCPP_TYPE_VIS_ONLY hash { };
24 template <> struct _LIBCPP_TYPE_VIS_ONLY hash<const char*>
25     : public unary_function<const char*, size_t>
27     _LIBCPP_INLINE_VISIBILITY
28     size_t operator()(const char *__c) const _NOEXCEPT
29     {
30         return __do_string_hash(__c, __c + strlen(__c));
31     }
34 template <> struct _LIBCPP_TYPE_VIS_ONLY hash<char *>
35     : public unary_function<char*, size_t>
37     _LIBCPP_INLINE_VISIBILITY
38     size_t operator()(char *__c) const _NOEXCEPT
39     {
40         return __do_string_hash<const char *>(__c, __c + strlen(__c));
41     }
44 template <> struct _LIBCPP_TYPE_VIS_ONLY hash<char>
45     : public unary_function<char, size_t>
47     _LIBCPP_INLINE_VISIBILITY
48     size_t operator()(char __c) const _NOEXCEPT
49     {
50         return __c;
51     }
54 template <> struct _LIBCPP_TYPE_VIS_ONLY hash<signed char>
55     : public unary_function<signed char, size_t>
57     _LIBCPP_INLINE_VISIBILITY
58     size_t operator()(signed char __c) const _NOEXCEPT
59     {
60         return __c;
61     }
64 template <> struct _LIBCPP_TYPE_VIS_ONLY hash<unsigned char>
65     : public unary_function<unsigned char, size_t>
67     _LIBCPP_INLINE_VISIBILITY
68     size_t operator()(unsigned char __c) const _NOEXCEPT
69     {
70         return __c;
71     }
74 template <> struct _LIBCPP_TYPE_VIS_ONLY hash<short>
75     : public unary_function<short, size_t>
77     _LIBCPP_INLINE_VISIBILITY
78     size_t operator()(short __c) const _NOEXCEPT
79     {
80         return __c;
81     }
84 template <> struct _LIBCPP_TYPE_VIS_ONLY hash<unsigned short>
85     : public unary_function<unsigned short, size_t>
87     _LIBCPP_INLINE_VISIBILITY
88     size_t operator()(unsigned short __c) const _NOEXCEPT
89     {
90         return __c;
91     }
94 template <> struct _LIBCPP_TYPE_VIS_ONLY hash<int>
95     : public unary_function<int, size_t>
97     _LIBCPP_INLINE_VISIBILITY
98     size_t operator()(int __c) const _NOEXCEPT
99     {
100         return __c;
101     }
104 template <> struct _LIBCPP_TYPE_VIS_ONLY hash<unsigned int>
105     : public unary_function<unsigned int, size_t>
107     _LIBCPP_INLINE_VISIBILITY
108     size_t operator()(unsigned int __c) const _NOEXCEPT
109     {
110         return __c;
111     }
114 template <> struct _LIBCPP_TYPE_VIS_ONLY hash<long>
115     : public unary_function<long, size_t>
117     _LIBCPP_INLINE_VISIBILITY
118     size_t operator()(long __c) const _NOEXCEPT
119     {
120         return __c;
121     }
124 template <> struct _LIBCPP_TYPE_VIS_ONLY hash<unsigned long>
125     : public unary_function<unsigned long, size_t>
127     _LIBCPP_INLINE_VISIBILITY
128     size_t operator()(unsigned long __c) const _NOEXCEPT
129     {
130         return __c;
131     }
135 #endif  // _LIBCPP_EXT_HASH