Alt-Lexical-Var-ButSupportModernPerl
view release on metacpan or search on metacpan
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))) {
HE *he;
SV *cref;
i++;
he = hv_fetch_ent(GvHV(PL_hintgv), key, 0, 0);
cref = he ? HeVAL(he) : &PL_sv_undef;
if(SvROK(cref) && SvRV(cref) != SvRV(ref))
continue;
}
(void) hv_delete_ent(GvHV(PL_hintgv), key, G_DISCARD, 0);
if(char_attr[(U8)sigil] & CHAR_USEPAD)
setup_pad(compcv, SvPVX(key)+KEYPREFIXLEN);
}
}
MODULE = Lexical::Var PACKAGE = Lexical::Var
PROTOTYPES: DISABLE
BOOT:
fake_sv = &PL_sv_undef;
fake_av = (SV*)newAV();
fake_hv = (SV*)newHV();
stash_lex_sv = gv_stashpvs(LEXPADPREFIX"$", 1);
stash_lex_av = gv_stashpvs(LEXPADPREFIX"@", 1);
stash_lex_hv = gv_stashpvs(LEXPADPREFIX"%", 1);
nxck_rv2sv = PL_check[OP_RV2SV]; PL_check[OP_RV2SV] = ck_rv2sv;
nxck_rv2av = PL_check[OP_RV2AV]; PL_check[OP_RV2AV] = ck_rv2av;
nxck_rv2hv = PL_check[OP_RV2HV]; PL_check[OP_RV2HV] = ck_rv2hv;
nxck_rv2cv = PL_check[OP_RV2CV]; PL_check[OP_RV2CV] = ck_rv2cv;
nxck_rv2gv = PL_check[OP_RV2GV]; PL_check[OP_RV2GV] = ck_rv2gv;
SV *
_variable_for_compilation(SV *classname, SV *name)
CODE:
PERL_UNUSED_VAR(classname);
RETVAL = lookup_for_compilation('N', "variable", name);
OUTPUT:
RETVAL
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
SV *
_sub_for_compilation(SV *classname, SV *name)
CODE:
PERL_UNUSED_VAR(classname);
RETVAL = lookup_for_compilation('&', "subroutine", name);
OUTPUT:
RETVAL
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.143 second using v1.01-cache-2.11-cpan-71847e10f99 )