#ifndef PMIX_HASH_STRING_H
#define PMIX_HASH_STRING_H
#define PMIX_HASH_STRLEN(str, hash, length) \
do { \
register const char *_str = (str); \
register uint32_t _hash = 0; \
register uint32_t _len = 0; \
\
while (*_str) { \
_len++; \
_hash += *_str++; \
_hash += (_hash << 10); \
_hash ^= (_hash >> 6); \
} \
\
_hash += (_hash << 3); \
_hash ^= (_hash >> 11); \
(hash) = (_hash + (_hash << 15)); \
(length) = _len; \
} while (0)
#define PMIX_HASH_STR(str, hash) \
do { \
register const char *_str = (str); \
register uint32_t _hash = 0; \
\
while (*_str) { \
_hash += *_str++; \
_hash += (_hash << 10); \
_hash ^= (_hash >> 6); \
} \
\
_hash += (_hash << 3); \
_hash ^= (_hash >> 11); \
(hash) = (_hash + (_hash << 15)); \
} while (0)
#endif