DCL 3.7.4
Loading...
Searching...
No Matches
HashFun.h
Go to the documentation of this file.
1#ifndef __DCL_HASH_FUN_H__
2#define __DCL_HASH_FUN_H__ 20110303
3
4#ifndef __DCL_STRING_H__
5#include <dcl/String.h>
6#endif
7
8__DCL_BEGIN_NAMESPACE
9
10template<typename TYPE>
11struct HashFun
12{
13};
14
15inline unsigned int __wide_string_hashKey(const wchar_t* _psz)
16{
17 unsigned int h = 0;
18 for( ; *_psz; _psz++) {
19 h = 5 * h + (unsigned int) *_psz;
20 }
21 return h;
22}
23
24template<>
25struct HashFun<String>
26{
27 unsigned int hashKey(const String& _str) const
28 {
29 return __wide_string_hashKey(_str.data());
30 }
31};
32
33template<>
34struct HashFun<const wchar_t*>
35{
36 unsigned int hashKey(const wchar_t* _psz) const
37 {
38 return __wide_string_hashKey(_psz);
39 }
40};
41
42template<>
43struct HashFun<wchar_t*>
44{
45 unsigned int hashKey(const wchar_t* _psz) const
46 {
47 return __wide_string_hashKey(_psz);
48 }
49};
50
51inline unsigned int __byte_string_hashKey(const char* _psz)
52{
53 unsigned int h = 0;
54 for( ; *_psz; _psz++) {
55 h = 5 * h + (unsigned char) *_psz;
56 }
57 return h;
58}
59
60template<>
61struct HashFun<ByteString>
62{
63 unsigned int hashKey(const ByteString& _str) const
64 {
65 return __byte_string_hashKey(_str.data());
66 }
67};
68
69template<>
70struct HashFun<const char*>
71{
72 unsigned int hashKey(const char* _psz) const
73 {
74 return __byte_string_hashKey(_psz);
75 }
76};
77
78template<>
79struct HashFun<char*>
80{
81 unsigned int hashKey(const char* _psz) const
82 {
83 return __byte_string_hashKey(_psz);
84 }
85};
86
87template<>
88struct HashFun<char>
89{
90 unsigned int hashKey(char _c) const
91 {
92 return _c;
93 }
94};
95
96template<>
97struct HashFun<unsigned char>
98{
99 unsigned int hashKey(unsigned char _c) const
100 {
101 return _c;
102 }
103};
104
105template<>
106struct HashFun<short>
107{
108 unsigned int hashKey(short _n) const
109 {
110 return _n;
111 }
112};
113
114template<>
115struct HashFun<unsigned short>
116{
117 unsigned int hashKey(unsigned short _n) const
118 {
119 return _n;
120 }
121};
122
123template<>
124struct HashFun<int>
125{
126 unsigned int hashKey(int _n) const
127 {
128 return _n;
129 }
130};
131
132template<>
133struct HashFun<unsigned int>
134{
135 unsigned int hashKey(unsigned int _n) const
136 {
137 return _n;
138 }
139};
140
141template<>
142struct HashFun<long>
143{
144 unsigned int hashKey(long _n) const
145 {
146 return _n;
147 }
148};
149
150template<>
151struct HashFun<unsigned long>
152{
153 unsigned int hashKey(unsigned long _n) const
154 {
155 return _n;
156 }
157};
158
159template<>
160struct HashFun<long long>
161{
162 unsigned int hashKey(long long _n) const
163 {
164 return (unsigned int) _n;
165 }
166};
167
168template<>
169struct HashFun<unsigned long long>
170{
171 unsigned int hashKey(unsigned long long _n) const
172 {
173 return (unsigned int) _n;
174 }
175};
176
177template<>
178struct HashFun<void *>
179{
180 unsigned int hashKey(void* _p) const
181 {
182 return (unsigned int) (size_t) _p;
183 }
184};
185
186template<>
187struct HashFun<const void *>
188{
189 unsigned int hashKey(const void* _p) const
190 {
191 return (unsigned int) (size_t) _p;
192 }
193};
194
195DCLCAPI size_t DCLGetNextPrimNumber(size_t _n);
196
197__DCL_END_NAMESPACE
198
199#endif // __DCL_HASH_FUN_H__
#define DCLCAPI
Definition Config.h:95
unsigned int __byte_string_hashKey(const char *_psz)
Definition HashFun.h:51
unsigned int __wide_string_hashKey(const wchar_t *_psz)
Definition HashFun.h:15
DCLCAPI size_t DCLGetNextPrimNumber(size_t _n)
Definition HashFun.cpp:23
unsigned int hashKey(const ByteString &_str) const
Definition HashFun.h:63
unsigned int hashKey(const String &_str) const
Definition HashFun.h:27
unsigned int hashKey(char _c) const
Definition HashFun.h:90
unsigned int hashKey(const char *_psz) const
Definition HashFun.h:81
unsigned int hashKey(const char *_psz) const
Definition HashFun.h:72
unsigned int hashKey(const void *_p) const
Definition HashFun.h:189
unsigned int hashKey(const wchar_t *_psz) const
Definition HashFun.h:36
unsigned int hashKey(int _n) const
Definition HashFun.h:126
unsigned int hashKey(long _n) const
Definition HashFun.h:144
unsigned int hashKey(long long _n) const
Definition HashFun.h:162
unsigned int hashKey(short _n) const
Definition HashFun.h:108
unsigned int hashKey(unsigned char _c) const
Definition HashFun.h:99
unsigned int hashKey(unsigned int _n) const
Definition HashFun.h:135
unsigned int hashKey(unsigned long _n) const
Definition HashFun.h:153
unsigned int hashKey(unsigned long long _n) const
Definition HashFun.h:171
unsigned int hashKey(unsigned short _n) const
Definition HashFun.h:117
unsigned int hashKey(void *_p) const
Definition HashFun.h:180
unsigned int hashKey(const wchar_t *_psz) const
Definition HashFun.h:45