44 namespace __private_hash__
50 typename enable_if<sizeof(T) == sizeof(uint32_t), size_t>::type
51 generic_hash(uint8_t*
begin, uint8_t*
end)
60 typename enable_if<sizeof(T) == sizeof(uint64_t), size_t>::type
61 generic_hash(uint8_t*
begin, uint8_t*
end)
71 template <
typename T>
struct hash;
80 size_t operator ()(
bool v)
const
82 return static_cast<size_t>(v);
93 size_t operator ()(
char v)
const
95 return static_cast<size_t>(v);
106 size_t operator ()(
signed char v)
const
108 return static_cast<size_t>(v);
119 size_t operator ()(
unsigned char v)
const
121 return static_cast<size_t>(v);
132 size_t operator ()(
wchar_t v)
const
134 return static_cast<size_t>(v);
145 size_t operator ()(
short v)
const
147 return static_cast<size_t>(v);
158 size_t operator ()(
unsigned short v)
const
160 return static_cast<size_t>(v);
171 size_t operator ()(
int v)
const
173 return static_cast<size_t>(v);
184 size_t operator ()(
unsigned int v)
const
186 return static_cast<size_t>(v);
197 size_t operator ()(
long v)
const
199 if (
sizeof(
size_t) ==
sizeof(v))
201 return static_cast<size_t>(v);
205 uint8_t* p =
reinterpret_cast<uint8_t*
>(&v);
207 return __private_hash__::generic_hash<size_t>(p, p +
sizeof(v));
219 size_t operator ()(
long long v)
const
221 if (
sizeof(
size_t) ==
sizeof(v))
223 return static_cast<size_t>(v);
227 uint8_t* p =
reinterpret_cast<uint8_t*
>(&v);
229 return __private_hash__::generic_hash<size_t>(p, p +
sizeof(v));
241 size_t operator ()(
unsigned long v)
const
243 if (
sizeof(
size_t) ==
sizeof(v))
245 return static_cast<size_t>(v);
249 uint8_t* p =
reinterpret_cast<uint8_t*
>(&v);
251 return __private_hash__::generic_hash<size_t>(p, p +
sizeof(v));
261 struct hash<unsigned long long>
263 size_t operator ()(
unsigned long long v)
const
265 if (
sizeof(
size_t) ==
sizeof(v))
267 return static_cast<size_t>(v);
271 uint8_t* p =
reinterpret_cast<uint8_t*
>(&v);
273 return __private_hash__::generic_hash<size_t>(p, p +
sizeof(v));
285 size_t operator ()(
float v)
const
287 if (
sizeof(
size_t) ==
sizeof(v))
289 return *
reinterpret_cast<size_t*
>(&v);
293 uint8_t* p =
reinterpret_cast<uint8_t*
>(&v);
295 return __private_hash__::generic_hash<size_t>(p, p +
sizeof(v));
307 size_t operator ()(
double v)
const
309 if (
sizeof(
size_t) ==
sizeof(v))
311 return *
reinterpret_cast<size_t*
>(&v);
315 uint8_t* p =
reinterpret_cast<uint8_t*
>(&v);
317 return __private_hash__::generic_hash<size_t>(p, p +
sizeof(v));
329 size_t operator ()(
long double v)
const
331 if (
sizeof(
size_t) ==
sizeof(v))
333 return *
reinterpret_cast<size_t*
>(&v);
337 uint8_t* p =
reinterpret_cast<uint8_t*
>(&v);
339 return __private_hash__::generic_hash<size_t>(p, p +
sizeof(v));
348 template <
typename T>
351 size_t operator ()(T* v)
const
353 if (
sizeof(
size_t) ==
sizeof(v))
355 return reinterpret_cast<size_t>(v);
359 uint8_t* p =
reinterpret_cast<uint8_t*
>(&v);
361 return __private_hash__::generic_hash<size_t>(p, p +
sizeof(v));
Definition: algorithm.h:43
TContainer::iterator end(TContainer &container)
Definition: container.h:95
TContainer::iterator begin(TContainer &container)
Definition: container.h:45