Changes in common/include/adt/hash.h [0db0df2:ad9178bf] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
common/include/adt/hash.h
r0db0df2 rad9178bf 108 108 } 109 109 110 /** Hash a NUL-terminated string.111 * The algorithm may change in the future, so never use it for hashes112 * that will be stored to a file or sent over a network.113 */114 static inline size_t hash_string(const char *str)115 {116 /* djb2 hash + extra mixing at the end */117 118 char c;119 size_t hash = 5381;120 121 while ((c = *(str++)))122 hash = (hash << 5) + hash + c;123 124 return hash_mix(hash);125 }126 127 /** Hash an arbitrarily sized sequence of bytes.128 * The algorithm may change in the future, so never use it for hashes129 * that will be stored to a file or sent over a network.130 */131 static inline size_t hash_bytes(const void *b, size_t len)132 {133 /* djb2 hash + extra mixing at the end */134 135 // TODO: work in bigger chunks for faster hashing136 137 const char *str = b;138 139 size_t hash = 5381;140 141 for (size_t i = 0; i < len; i++)142 hash = (hash << 5) + hash + str[i];143 144 return hash_mix(hash);145 }146 147 110 #endif
Note:
See TracChangeset
for help on using the changeset viewer.