Package-Anon
view release on metacpan or search on metacpan
CV *cv;
cv = (CV *)newSV(0);
sv_upgrade((SV *)cv, SVt_PVCV);
CvISXSUB_on(cv);
CvXSUB(cv) = anon_isa;
CvXSUBANY(cv).any_uv = PTR2UV(stash);
CvFILE(cv) = __FILE__;
return cv;
}
MODULE = Package::Anon PACKAGE = Package::Anon
PROTOTYPES: DISABLE
SV *
new (klass, namesv=NULL)
SV *klass
SV *namesv
PREINIT:
HV *stash;
char *name;
STRLEN namelen;
CV *isa_method;
GV *isa_glob;
CODE:
if (namesv)
name = SvPV(namesv, namelen);
else {
name = "__ANON__";
namelen = 8;
}
stash = newHV();
hv_name_set(stash, name, namelen, 0);
isa_glob = anon_gv_pvn(aTHX_ stash, "isa", 3);
isa_method = make_isa_method(aTHX_ stash);
GvCVGEN(isa_glob) = 0;
GvCV_set(isa_glob, isa_method);
CvGV_set(isa_method, isa_glob);
(void)hv_store(stash, "isa", 3, (SV *)isa_glob, 0);
RETVAL = newRV_noinc((SV *)stash);
sv_bless(RETVAL, gv_stashsv(klass, 0));
OUTPUT:
RETVAL
SV *
create_glob (stash, name)
SV *stash
SV *name
CODE:
RETVAL = newRV_noinc((SV *)anon_gv_sv(aTHX_ (HV *)SvRV(stash), name));
OUTPUT:
RETVAL
void
bless (stash, rv)
SV *stash
SV *rv
PPCODE:
sv_bless(rv, (HV *)SvRV(stash));
PUSHs(rv);
SV *
blessed (klass, obj)
SV *klass
SV *obj
CODE:
if (!SvROK(obj) || !SvOBJECT(SvRV(obj)))
XSRETURN_UNDEF;
RETVAL = newRV_inc((SV *)SvSTASH(SvRV(obj)));
sv_bless(RETVAL, gv_stashsv(klass, 0));
OUTPUT:
RETVAL
( run in 0.786 second using v1.01-cache-2.11-cpan-5511b514fd6 )