Crypt-xxHash
view release on metacpan or search on metacpan
xs/xxHash.xs view on Meta::CPAN
#else
XXH128_hash_t hash = XXH3_128bits_withSeed(input, STRLEN_length_of_input, seed);
#endif
sprintf(value64, format, (uint64_t) hash.high64, (uint64_t) hash.low64 );
RETVAL = value64;
OUTPUT:
RETVAL
void
xxhash3_64bits_stream( UV seed )
PPCODE:
XXH64_state_t * state = XXH64_createState();
if( !state )
croak("Allocate 64bits xxHash state failed.");
if( XXH64_reset(state, seed) == XXH_ERROR )
croak("Initialize 64bits xxHash state failed.");
SV *canceller = NEWSV(0, 0);
SvUPGRADE(canceller, SVt_PVMG);
sv_magicext(canceller, NULL, PERL_MAGIC_ext, &canceller_vtbl, (const char*)state, 0);
mPUSHs(newRV_noinc(canceller));
void
xxhash3_64bits_stream_update(SV * state_RV, SV * data_SV)
PPCODE:
if( !SvROK(state_RV) )
croak("This is not a 64bits xxHash state variable.");
MAGIC * mg = mg_findext(SvRV(state_RV), PERL_MAGIC_ext, &canceller_vtbl);
if( !mg )
croak("This is not a 64bits xxHash state variable.");
STRLEN len;
char * buf = SvPV(data_SV, len);
if( XXH64_update((XXH64_state_t*)mg->mg_ptr, buf, len) == XXH_ERROR )
croak("Update 64bits xxHash state failed.");
void
xxhash3_64bits_stream_digest(SV * state_RV)
PPCODE:
dXSTARG;
if( !SvROK(state_RV) )
croak("This is not a 64bits xxHash state variable.");
MAGIC * mg = mg_findext(SvRV(state_RV), PERL_MAGIC_ext, &canceller_vtbl);
if( !mg )
croak("This is not a 64bits xxHash state variable.");
PUSHu((UV) XXH64_digest((XXH64_state_t*)mg->mg_ptr));
void
xxhash3_64bits_stream_digest_hex(SV * state_RV)
PPCODE:
if( !SvROK(state_RV) )
croak("This is not a 64bits xxHash state variable.");
MAGIC * mg = mg_findext(SvRV(state_RV), PERL_MAGIC_ext, &canceller_vtbl);
if( !mg )
croak("This is not a 64bits xxHash state variable.");
mPUSHs(newSVpvf("%016" PRIx64, (uint64_t)XXH64_digest((XXH64_state_t*)mg->mg_ptr)));
( run in 0.920 second using v1.01-cache-2.11-cpan-71847e10f99 )