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