/* MurmurHash1 functions */ void ring_murmurhash1(void *pPointer) { char *key = NULL; int keylen; int seed = 0; uint32_t out; int ret_type = 0; if (RING_API_PARACOUNT < 2 || RING_API_PARACOUNT > 3) { RING_API_ERROR(RING_API_MISS2PARA); return ; } if (!RING_API_ISSTRING(1)) { RING_API_ERROR("murmurhash1 expects the first parameter to be a string\n"); return; } if (!RING_API_ISNUMBER(2)) { RING_API_ERROR("murmurhash1 expects the first parameter to be an integer\n"); return; } key = RING_API_GETSTRING(1); keylen = strlen(key); seed = RING_API_GETNUMBER(2); if (RING_API_PARACOUNT == 3) { if (RING_API_ISNUMBER(3)) { ret_type = RING_API_GETNUMBER(3); if (!is_bool(ret_type)) { RING_API_ERROR("Third parameter should be boolean value\n"); } } else { RING_API_ERROR("murmurhash1 expects the third parameter to be an integer\n"); } } out = MurmurHash1(key, keylen, seed); MH_RETURN_INT(out, ret_type); }
uint32_t HStorage_GetHashFromString( const char* string ) { char hstring[MAX_VARNAME] = { 0 }; Q_strncpyz( hstring, string, sizeof(hstring) ); return MurmurHash1( hstring, MAX_VARNAME, 0x3f1ad378 ); }