static PyObject *murmurHash(PyObject *self, PyObject *args){ const char *text; int hash_len; int seed; unsigned int hash; if (!PyArg_ParseTuple(args, "sii", &text, &hash_len, &seed)) return NULL; hash = MurmurHashNeutral2(text, hash_len, seed); return Py_BuildValue("i", hash); }
ERL_NIF_TERM erlang_murmurhashneutral2_1_impl(ErlNifEnv* env, int, const ERL_NIF_TERM argv[]) { ErlNifBinary bin; uint32_t h; if (!check_and_unpack_data(env, argv[0], &bin)) { return enif_make_badarg(env); } h = MurmurHashNeutral2(bin.data, bin.size, 0); return enif_make_uint(env, h); }
void ring_murmurhash_neutral2(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("murmurhash_neutral2 expects the first parameter to be a string"); return; } if (!RING_API_ISNUMBER(2)) { RING_API_ERROR("murmurhash_neutral2 expects the first parameter to be an integer"); 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("murmurhash_neutral2 expects the third parameter to be an integer\n"); } } out = MurmurHashNeutral2(key, keylen, seed); MH_RETURN_INT(out, ret_type); }