Alter

 view release on metacpan or  search on metacpan

Alter.xs  view on Meta::CPAN


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)

Alter.xs  view on Meta::CPAN

    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);

ppport.h  view on Meta::CPAN

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|

ppport.h  view on Meta::CPAN

{
    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 )