Alter
view release on metacpan or search on metacpan
SV *corona(SV *obj)
PROTOTYPE: $
PREINIT:
HV *corona;
CODE:
corona = ALT_corona(obj);
if (!corona)
XSRETURN_EMPTY;
RETVAL = newRV_inc((SV*)corona);
OUTPUT:
RETVAL
SV *alter(SV *obj, SV *val)
PROTOTYPE: $$
PREINIT:
HV *corona;
char *class;
CODE:
corona = ALT_corona(obj);
if (!corona)
XSRETURN_EMPTY;
class = CopSTASHPV(PL_curcop);
hv_store(corona, class, strlen(class), SvREFCNT_inc(val), 0);
RETVAL = SvREFCNT_inc(obj); /* method chaining */
OUTPUT:
RETVAL
SV *ego(SV *obj, ...)
PROTOTYPE: $
CODE:
HV *corona = ALT_corona(obj);
char *class;
SV **ego_ptr;
SV *ego;
if (!corona)
if ((ego_ptr = hv_fetch(corona, class, strlen(class), 0))) {
ego = *ego_ptr;
} else {
if ( (ego = ALT_vivify(class)) ) {
hv_store(corona, class, strlen(class), ego, 0);
}
}
if (!ego)
XSRETURN_UNDEF;
RETVAL = SvREFCNT_inc(ego);
OUTPUT:
RETVAL
void _set_class_type(char *class, SV *spec)
CODE:
HV *type_tab = ALT_type_tab();
if (SvROK(spec)) {
SV *type = newSViv(SvTYPE(SvRV(spec)));
hv_store(type_tab, class, strlen(class), type, 0);
} else if (!SvOK(spec)) {
hv_delete(type_tab, class, strlen(class), G_DISCARD);
PTR2ul|5.007001||p
PTRV|5.006000||p
PUSHMARK|||
PUSH_MULTICALL||5.009005|
PUSHi|||
PUSHmortal|5.009002||p
PUSHn|||
PUSHp|||
PUSHs|||
PUSHu|5.004000||p
PUTBACK|||
PerlIO_clearerr||5.007003|
PerlIO_close||5.007003|
PerlIO_context_layers||5.009004|
PerlIO_eof||5.007003|
PerlIO_error||5.007003|
PerlIO_fileno||5.007003|
PerlIO_fill||5.007003|
PerlIO_flush||5.007003|
PerlIO_get_base||5.007003|
PerlIO_get_bufsiz||5.007003|
{
dSP;
SV* sv = newSVpv(p, 0);
PUSHMARK(sp);
eval_sv(sv, G_SCALAR);
SvREFCNT_dec(sv);
SPAGAIN;
sv = POPs;
PUTBACK;
if (croak_on_error && SvTRUE(GvSV(errgv)))
croak(SvPVx(GvSV(errgv), na));
return sv;
}
#endif
#endif
( run in 0.390 second using v1.01-cache-2.11-cpan-4e96b696675 )