ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/util.h
(Generate patch)

Comparing deliantra/server/include/util.h (file contents):
Revision 1.1 by root, Sat Sep 2 22:57:55 2006 UTC vs.
Revision 1.5 by pippijn, Thu Sep 7 20:03:20 2006 UTC

1#ifndef UTIL_H__ 1#ifndef UTIL_H__
2#define UTIL_H__ 2#define UTIL_H__
3
4#if __GNUC__ >= 3
5# define is_constant(c) __builtin_constant_p (c)
6#else
7# define is_constant(c) 0
8#endif
3 9
4// makes dynamically allocated objects zero-initialised 10// makes dynamically allocated objects zero-initialised
5struct zero_initialised 11struct zero_initialised
6{ 12{
7 void *operator new (size_t s); 13 void *operator new (size_t s);
14 void *operator new [] (size_t s);
8 void operator delete (void *p, size_t s); 15 void operator delete (void *p, size_t s);
16 void operator delete [] (void *p, size_t s);
17};
18
19struct str_hash
20{
21 std::size_t operator ()(const char *s) const
22 {
23 unsigned long hash = 0;
24
25 /* use the one-at-a-time hash function, which supposedly is
26 * better than the djb2-like one used by perl5.005, but
27 * certainly is better then the bug used here before.
28 * see http://burtleburtle.net/bob/hash/doobs.html
29 */
30 while (*s)
31 {
32 hash += *s++;
33 hash += hash << 10;
34 hash ^= hash >> 6;
35 }
36
37 hash += hash << 3;
38 hash ^= hash >> 11;
39 hash += hash << 15;
40
41 return hash;
42 }
43};
44
45struct str_equal
46{
47 bool operator ()(const char *a, const char *b) const
48 {
49 return !strcmp (a, b);
50 }
9}; 51};
10 52
11#endif 53#endif
12 54

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines