Algorithm-ConsistentHash-Ketama
view release on metacpan or search on metacpan
xs/Ketama.xs view on Meta::CPAN
{
s = p->buckets[i];
ENTER;
SAVETMPS;
PUSHMARK(SP);
mXPUSHp( "Algorithm::ConsistentHash::Ketama::Bucket", 41 );
mXPUSHp( "label", 5 );
mXPUSHp( s.label, strlen(s.label) );
mXPUSHp( "weight", 6 );
mXPUSHi( s.weight );
PUTBACK;
call_method("new", G_SCALAR);
SPAGAIN;
sv = POPs;
SvREFCNT_inc(sv);
PUTBACK;
FREETMPS;
LEAVE;
}
XPUSHs( sv );
}
return p->numbuckets;
}
static int
PerlKetama_continuum_compare( PerlKetama_Continuum_Point *a, PerlKetama_Continuum_Point *b )
TYPEMAP
PerlKetama* T_PERLKETAMA
INPUT
T_PERLKETAMA
{
MAGIC *mg;
mg = PerlKetama_mg_find(aTHX_ SvRV($arg), &PerlKetama_vtbl);
if (mg) {
$var = (PerlKetama *) mg->mg_ptr;
} else {
croak(\"not a ketama object\");
}
}
OUTPUT
T_PERLKETAMA
if (!$var) /* if null */
SvOK_off($arg); /* then return as undef instead of reaf to undef */
else {
/* setup $arg as a ref to a blessed hash hv */
MAGIC *mg;
HV *hv = newHV();
const char *classname = \"Algorithm::ConsistentHash::Ketama\";
/* take (sub)class name to use from class_sv if appropriate */
if (SvMAGICAL(class_sv))
( run in 0.396 second using v1.01-cache-2.11-cpan-4e96b696675 )