Lexical-Var
view release on metacpan or search on metacpan
lib/Lexical/Var.xs view on Meta::CPAN
static void THX_unimport(pTHX_ char base_sigil, char const *vari_word)
{
dXSARGS;
CV *compcv;
int i;
SP -= items;
if(items < 1)
croak("too few arguments for unimport");
if(items == 1)
croak("%" SVf " does no default unimportation", SVfARG(ST(0)));
compcv = find_compcv(vari_word);
PL_hints |= HINT_LOCALIZE_HH;
gv_HVadd(PL_hintgv);
for(i = 1; i != items; i++) {
SV *name = ST(i), *ref, *key;
char sigil;
if(!sv_is_string(name))
croak("%s name is not a string", vari_word);
key = name_key(base_sigil, name);
if(!key) croak("malformed %s name", vari_word);
sigil = SvPVX(key)[KEYPREFIXLEN];
if(i != items && (ref = ST(i+1), SvROK(ref))) {
i++;
if(current_referent(key) != SvRV(ref))
continue;
}
check_for_pad_clash(compcv, SvPVX(key)+KEYPREFIXLEN);
(void) hv_delete_ent(GvHV(PL_hintgv), key, G_DISCARD, 0);
if(char_attr[(U8)sigil] & CHAR_USEPAD)
setup_pad(compcv, SvPVX(key)+KEYPREFIXLEN, NULL);
}
PUTBACK;
}
MODULE = Lexical::Var PACKAGE = Lexical::Var
PROTOTYPES: DISABLE
BOOT:
#if !Q_USE_THREADS
# if Q_NEED_FAKE_REFERENT
fake_sv = newSV(0);
fake_av = (SV*)newAV();
fake_hv = (SV*)newHV();
# endif /* Q_NEED_FAKE_REFERENT */
lvour_sv_stash = gv_stashpvs(LVOURPREFIX "$", 1);
lvour_av_stash = gv_stashpvs(LVOURPREFIX "@", 1);
lvour_hv_stash = gv_stashpvs(LVOURPREFIX "%", 1);
# if Q_CODE_AS_STATE_IN_PAD
lvour_cv_stash = gv_stashpvs(LVOURPREFIX "&", 1);
# endif /* Q_CODE_AS_STATE_IN_PAD */
#endif /* !Q_USE_THREADS */
wrap_op_checker(OP_RV2SV, THX_myck_rv2sv, &THX_nxck_rv2sv);
wrap_op_checker(OP_RV2AV, THX_myck_rv2av, &THX_nxck_rv2av);
wrap_op_checker(OP_RV2HV, THX_myck_rv2hv, &THX_nxck_rv2hv);
wrap_op_checker(OP_RV2CV, THX_myck_rv2cv, &THX_nxck_rv2cv);
wrap_op_checker(OP_RV2GV, THX_myck_rv2gv, &THX_nxck_rv2gv);
void
import(SV *classname, ...)
PPCODE:
PERL_UNUSED_VAR(classname);
PUSHMARK(SP);
/* the modified SP is intentionally lost here */
import('N', "variable");
SPAGAIN;
void
unimport(SV *classname, ...)
PPCODE:
PERL_UNUSED_VAR(classname);
PUSHMARK(SP);
/* the modified SP is intentionally lost here */
unimport('N', "variable");
SPAGAIN;
MODULE = Lexical::Var PACKAGE = Lexical::Sub
void
import(SV *classname, ...)
PPCODE:
PERL_UNUSED_VAR(classname);
PUSHMARK(SP);
/* the modified SP is intentionally lost here */
import('&', "subroutine");
SPAGAIN;
void
unimport(SV *classname, ...)
PPCODE:
PERL_UNUSED_VAR(classname);
PUSHMARK(SP);
/* the modified SP is intentionally lost here */
unimport('&', "subroutine");
SPAGAIN;
( run in 1.142 second using v1.01-cache-2.11-cpan-5511b514fd6 )