00001 #ifndef COMMONS_HASH_H
00002 #define COMMONS_HASH_H
00003
00004 #include <sys/types.h>
00005
00006 namespace commons
00007 {
00008
00012 inline size_t
00013 hash_stl(const char* s)
00014 {
00015 unsigned long h = 0;
00016 for ( ; *s; ++s)
00017 h = 5 * h + *s;
00018 return size_t(h);
00019 }
00020
00024 inline size_t
00025 hash_djb2(const char* s)
00026 {
00027 unsigned long h = 5381;
00028 for (; *s; ++s)
00029 h = ((h << 5) + h) + *s;
00030 return size_t(h);
00031 }
00032
00036 inline size_t
00037 hash_java(const char* s)
00038 {
00039 unsigned long h = 0;
00040 for (; *s; ++s)
00041 h = 31 * h + *s;
00042 return size_t(h);
00043 }
00044
00045 }
00046
00047 #endif