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