root / lab4 / .minix-src / include / c++ / ext / __hash
History | View | Annotate | Download (3.1 KB)
1 | 13 | up20180614 | // -*- 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 | //===----------------------------------------------------------------------===// |
||
10 | |||
11 | #ifndef _LIBCPP_EXT_HASH |
||
12 | #define _LIBCPP_EXT_HASH |
||
13 | |||
14 | #pragma GCC system_header |
||
15 | |||
16 | #include <string> |
||
17 | #include <cstring> |
||
18 | |||
19 | namespace __gnu_cxx { |
||
20 | using namespace std; |
||
21 | |||
22 | template <typename _Tp> struct _LIBCPP_TYPE_VIS_ONLY hash { }; |
||
23 | |||
24 | template <> struct _LIBCPP_TYPE_VIS_ONLY hash<const char*> |
||
25 | : public unary_function<const char*, size_t> |
||
26 | { |
||
27 | _LIBCPP_INLINE_VISIBILITY |
||
28 | size_t operator()(const char *__c) const _NOEXCEPT |
||
29 | { |
||
30 | return __do_string_hash(__c, __c + strlen(__c)); |
||
31 | } |
||
32 | }; |
||
33 | |||
34 | template <> struct _LIBCPP_TYPE_VIS_ONLY hash<char *> |
||
35 | : public unary_function<char*, size_t> |
||
36 | { |
||
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 | } |
||
42 | }; |
||
43 | |||
44 | template <> struct _LIBCPP_TYPE_VIS_ONLY hash<char> |
||
45 | : public unary_function<char, size_t> |
||
46 | { |
||
47 | _LIBCPP_INLINE_VISIBILITY |
||
48 | size_t operator()(char __c) const _NOEXCEPT |
||
49 | { |
||
50 | return __c; |
||
51 | } |
||
52 | }; |
||
53 | |||
54 | template <> struct _LIBCPP_TYPE_VIS_ONLY hash<signed char> |
||
55 | : public unary_function<signed char, size_t> |
||
56 | { |
||
57 | _LIBCPP_INLINE_VISIBILITY |
||
58 | size_t operator()(signed char __c) const _NOEXCEPT |
||
59 | { |
||
60 | return __c; |
||
61 | } |
||
62 | }; |
||
63 | |||
64 | template <> struct _LIBCPP_TYPE_VIS_ONLY hash<unsigned char> |
||
65 | : public unary_function<unsigned char, size_t> |
||
66 | { |
||
67 | _LIBCPP_INLINE_VISIBILITY |
||
68 | size_t operator()(unsigned char __c) const _NOEXCEPT |
||
69 | { |
||
70 | return __c; |
||
71 | } |
||
72 | }; |
||
73 | |||
74 | template <> struct _LIBCPP_TYPE_VIS_ONLY hash<short> |
||
75 | : public unary_function<short, size_t> |
||
76 | { |
||
77 | _LIBCPP_INLINE_VISIBILITY |
||
78 | size_t operator()(short __c) const _NOEXCEPT |
||
79 | { |
||
80 | return __c; |
||
81 | } |
||
82 | }; |
||
83 | |||
84 | template <> struct _LIBCPP_TYPE_VIS_ONLY hash<unsigned short> |
||
85 | : public unary_function<unsigned short, size_t> |
||
86 | { |
||
87 | _LIBCPP_INLINE_VISIBILITY |
||
88 | size_t operator()(unsigned short __c) const _NOEXCEPT |
||
89 | { |
||
90 | return __c; |
||
91 | } |
||
92 | }; |
||
93 | |||
94 | template <> struct _LIBCPP_TYPE_VIS_ONLY hash<int> |
||
95 | : public unary_function<int, size_t> |
||
96 | { |
||
97 | _LIBCPP_INLINE_VISIBILITY |
||
98 | size_t operator()(int __c) const _NOEXCEPT |
||
99 | { |
||
100 | return __c; |
||
101 | } |
||
102 | }; |
||
103 | |||
104 | template <> struct _LIBCPP_TYPE_VIS_ONLY hash<unsigned int> |
||
105 | : public unary_function<unsigned int, size_t> |
||
106 | { |
||
107 | _LIBCPP_INLINE_VISIBILITY |
||
108 | size_t operator()(unsigned int __c) const _NOEXCEPT |
||
109 | { |
||
110 | return __c; |
||
111 | } |
||
112 | }; |
||
113 | |||
114 | template <> struct _LIBCPP_TYPE_VIS_ONLY hash<long> |
||
115 | : public unary_function<long, size_t> |
||
116 | { |
||
117 | _LIBCPP_INLINE_VISIBILITY |
||
118 | size_t operator()(long __c) const _NOEXCEPT |
||
119 | { |
||
120 | return __c; |
||
121 | } |
||
122 | }; |
||
123 | |||
124 | template <> struct _LIBCPP_TYPE_VIS_ONLY hash<unsigned long> |
||
125 | : public unary_function<unsigned long, size_t> |
||
126 | { |
||
127 | _LIBCPP_INLINE_VISIBILITY |
||
128 | size_t operator()(unsigned long __c) const _NOEXCEPT |
||
129 | { |
||
130 | return __c; |
||
131 | } |
||
132 | }; |
||
133 | } |
||
134 | |||
135 | #endif // _LIBCPP_EXT_HASH |