Internals

 view release on metacpan or  search on metacpan

Internals.xs  view on Meta::CPAN


MODULE = Internals		PACKAGE = Internals


PROTOTYPES: DISABLE


void
IsWriteProtected(ref)
SV *	ref
PPCODE:
{
    SV *obj;

    if ( INTERNALS_REFERENCE(ref,obj) )
    {
        PUSHs(sv_2mortal(newSViv((IV)( SvREADONLY(obj) ? 1 : 0 ))));
    }
    else INTERNALS_NO_REFERENCE("IsWriteProtected");
}


void
SetReadOnly(ref)
SV *	ref
PPCODE:
{
    SV *obj;

    if ( INTERNALS_REFERENCE(ref,obj) )
    {
        SvREADONLY_on(obj);
        PUSHs(sv_mortalcopy(ref));
    }
    else INTERNALS_NO_REFERENCE("SetReadOnly");
}


void
SetReadWrite(ref)
SV *	ref
PPCODE:
{
    SV *obj;

    if ( INTERNALS_REFERENCE(ref,obj) )
    {
        SvREADONLY_off(obj);
        PUSHs(sv_mortalcopy(ref));
    }
    else INTERNALS_NO_REFERENCE("SetReadWrite");
}


void
GetRefCount(ref)
SV *	ref
PPCODE:
{
    SV *obj;

    if ( INTERNALS_REFERENCE(ref,obj) )
    {
        PUSHs(sv_2mortal(newSViv((IV)( obj->sv_refcnt ))));
    }
    else INTERNALS_NO_REFERENCE("GetRefCount");
}


void
SetRefCount(ref,val)
SV *	ref
SV *	val
PPCODE:
{
    SV *obj;
    U32 cnt;

    if ( INTERNALS_REFERENCE(ref,obj) )
    {
        if ( INTERNALS_NUMBER(val,cnt) )
        {
            obj->sv_refcnt = cnt;
        }



( run in 0.965 second using v1.01-cache-2.11-cpan-5511b514fd6 )