Data-Dump-Streamer

 view release on metacpan or  search on metacpan

lib/Data/Dump/Streamer.xs  view on Meta::CPAN


int
alias_hv(hvref, key, val)
	SV* hvref
	SV* key
	SV* val
    PROTOTYPE: \%$$
    PREINIT:
	HV* hv;
    CODE:
    {
	if (!SvROK(hvref) || SvTYPE(SvRV(hvref)) != SVt_PVHV)
	   croak("First argument to alias_hv() must be a hash reference");
	hv = (HV*)SvRV(hvref);
        SvREFCNT_inc(val);
	if (!hv_store_ent(hv, key, val, 0)) {
	    SvREFCNT_dec(val);
	    RETVAL=0;
	} else {
	    RETVAL=1;
	}

    }
    OUTPUT:
        RETVAL

char *
blessed(sv)
    SV * sv
PROTOTYPE: $
CODE:
{
    if (SvMAGICAL(sv))
	mg_get(sv);
    if(!sv_isobject(sv)) {
	XSRETURN_UNDEF;
    }
    RETVAL = (char *)sv_reftype(SvRV(sv),TRUE);
}
OUTPUT:
    RETVAL


UV
refaddr(sv)
    SV * sv
PROTOTYPE: $
CODE:
{
    if(!SvROK(sv)) {
	RETVAL = 0;
    } else {
        RETVAL = PTR2UV(SvRV(sv));
    }
}
OUTPUT:
    RETVAL


void
weaken(sv)
	SV *sv
PROTOTYPE: $
CODE:
#ifdef SvWEAKREF
        sv_rvweaken(sv);
        XSRETURN_YES;
#else
	croak("weak references are not implemented in this release of perl");
#endif

void
isweak(sv)
	SV *sv
PROTOTYPE: $
CODE:
#ifdef SvWEAKREF
	ST(0) = boolSV(SvROK(sv) && SvWEAKREF(sv));
	XSRETURN(1);
#else
	XSRETURN_NO;
#endif


IV
weak_refcount(sv)
    SV * sv
PROTOTYPE: $
CODE:
{
    RETVAL=0;
    ADD_WEAK_REFCOUNT;
}
OUTPUT:
    RETVAL

IV
sv_refcount(sv)
    SV * sv
PROTOTYPE: $
CODE:
{
    RETVAL = SvREFCNT(sv);
    ADD_WEAK_REFCOUNT;
}
OUTPUT:
    RETVAL

IV
refcount(sv)
    SV * sv
PROTOTYPE: $
CODE:
{
    if(!SvROK(sv)) {
	RETVAL=0;
    } else {
        sv = (SV*)SvRV(sv);
        RETVAL = SvREFCNT(sv);
        ADD_WEAK_REFCOUNT;
    }
}
OUTPUT:
    RETVAL




( run in 0.608 second using v1.01-cache-2.11-cpan-39bf76dae61 )