Hash-Util-Pick
view release on metacpan or search on metacpan
lib/Hash/Util/Pick.xs view on Meta::CPAN
#define NEED_newSVpvn_flags
#include "ppport.h"
MODULE = Hash::Util::Pick PACKAGE = Hash::Util::Pick
PROTOTYPES: DISABLED
void
pick(...)
PROTOTYPE: $@
PPCODE:
{
SV **args = &PL_stack_base[ax];
HV *src = SvROK(args[0]) ?
(HV*)SvRV(args[0]) : (HV*)sv_2mortal((SV*)newHV());
I32 i;
HV *dest = (HV*)sv_2mortal((SV*)newHV());
for (i = 1; i < items; ++i) {
if (hv_exists_ent(src, args[i], 0)) {
lib/Hash/Util/Pick.xs view on Meta::CPAN
}
}
XPUSHs(newRV_inc((SV*)dest));
XSRETURN(1);
}
void
pick_by(...)
PROTOTYPE: $&
PPCODE:
{
dMULTICALL;
GV *gv;
HV *stash;
I32 gimme = G_SCALAR;
HV *src = SvROK(ST(0)) ?
(HV*)SvRV(ST(0)) : (HV*)sv_2mortal((SV*)newHV());
if (!SvROK(ST(1)) || SvTYPE((SV*)SvRV(ST(1))) != SVt_PVCV) {
lib/Hash/Util/Pick.xs view on Meta::CPAN
POP_MULTICALL;
XPUSHs(newRV_inc((SV*)dest));
XSRETURN(1);
}
void
omit(...)
PROTOTYPE: $@
PPCODE:
{
SV **args = &PL_stack_base[ax];
HV *src = SvROK(args[0]) ?
(HV*)SvRV(args[0]) : (HV*)sv_2mortal((SV*)newHV());
I32 i;
HV *dest = (HV*)sv_2mortal((SV*)newHV());
HV *omit_key_to_exist = (HV*)sv_2mortal((SV*)newHV());
for (i = 1; i < items; ++i) {
lib/Hash/Util/Pick.xs view on Meta::CPAN
}
}
XPUSHs(newRV_inc((SV*)dest));
XSRETURN(1);
}
void
omit_by(...)
PROTOTYPE: $&
PPCODE:
{
dMULTICALL;
GV *gv;
HV *stash;
I32 gimme = G_SCALAR;
HV *src = SvROK(ST(0)) ?
(HV*)SvRV(ST(0)) : (HV*)sv_2mortal((SV*)newHV());
HV *dest = (HV*)sv_2mortal((SV*)newHV());
( run in 0.604 second using v1.01-cache-2.11-cpan-71847e10f99 )