Acme-Pointer

 view release on metacpan or  search on metacpan

lib/Acme/Pointer.xs  view on Meta::CPAN

    if (IsCodeRef(len, ref) || IsHashRef(len, ref)) {
        RETVAL = get_address(aTHX_ 4, len, ref);
    } else if (IsArrayRef(len, ref)) {
        RETVAL = get_address(aTHX_ 5, len, ref);
    } else if (IsScalarRef(len, ref)) {
        RETVAL = get_address(aTHX_ 6, len, ref);
    } else {
        RETVAL = &PL_sv_undef;
    }
}
OUTPUT:
    RETVAL

SV *
pointer(addr_str)
    SV *addr_str
CODE:
{
    STRLEN len;
    const char *addr = SvPV(addr_str, len);
    if (len > 1 && addr[0] == '0' && addr[1] == 'x') {
        RETVAL = _pointer(aTHX_ addr);
    } else {
        RETVAL = &PL_sv_undef;
    }
}
OUTPUT:
    RETVAL

lib/Acme/ppport.h  view on Meta::CPAN

PTR2ul|5.007001||p
PTRV|5.006000||p
PUSHMARK|||
PUSH_MULTICALL||5.021008|
PUSHi|||
PUSHmortal|5.009002||p
PUSHn|||
PUSHp|||
PUSHs|||
PUSHu|5.004000||p
PUTBACK|||
PadARRAY||5.021008|
PadMAX||5.021008|
PadlistARRAY||5.021008|
PadlistMAX||5.021008|
PadlistNAMESARRAY||5.021008|
PadlistNAMESMAX||5.021008|
PadlistNAMES||5.021008|
PadlistREFCNT||5.017004|
PadnameIsOUR|||
PadnameIsSTATE|||

lib/Acme/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.400 second using v1.01-cache-2.11-cpan-4e96b696675 )