Devel-PPPort

 view release on metacpan or  search on metacpan

parts/inc/uv  view on Meta::CPAN


#if !defined(my_strnlen)
#if { NEED my_strnlen }

Size_t
my_strnlen(const char *str, Size_t maxlen)
{
    const char *p = str;

    while(maxlen-- && *p)
        p++;

    return p - str;
}

#endif
#endif

=xsinit

#define NEED_my_strnlen

=xsubs

SV *
sv_setuv(uv)
        UV uv
        CODE:
                RETVAL = newSViv(1);
                sv_setuv(RETVAL, uv);
        OUTPUT:
                RETVAL

SV *
newSVuv(uv)
        UV uv
        CODE:
                RETVAL = newSVuv(uv);
        OUTPUT:
                RETVAL

UV
sv_2uv(sv)
        SV *sv
        CODE:
                RETVAL = sv_2uv(sv);
        OUTPUT:
                RETVAL

UV
SvUVx(sv)
        SV *sv
        CODE:
                sv--;
                RETVAL = SvUVx(++sv);
        OUTPUT:
                RETVAL

void
XSRETURN_UV()
        PPCODE:
                XSRETURN_UV(42);

void
PUSHu()
        PREINIT:
                dTARG;
        PPCODE:
                TARG = sv_newmortal();
                EXTEND(SP, 1);
                PUSHu(42);
                XSRETURN(1);

void
XPUSHu()
        PREINIT:
                dTARG;
        PPCODE:
                TARG = sv_newmortal();
                XPUSHu(43);
                XSRETURN(1);

STRLEN
my_strnlen(s, max)
        char * s
        STRLEN max
        CODE:
            RETVAL= my_strnlen(s, max);
        OUTPUT:
            RETVAL

=tests plan => 11

BEGIN { require warnings if ivers($]) > ivers('5.006') }

is(&Devel::PPPort::sv_setuv(42), 42);
is(&Devel::PPPort::newSVuv(123), 123);
is(&Devel::PPPort::sv_2uv("4711"), 4711);
is(&Devel::PPPort::sv_2uv("1735928559"), 1735928559);
is(&Devel::PPPort::SvUVx("1735928559"), 1735928559);
is(&Devel::PPPort::SvUVx(1735928559), 1735928559);
is(&Devel::PPPort::SvUVx(0xdeadbeef), 0xdeadbeef);
is(&Devel::PPPort::XSRETURN_UV(), 42);
is(&Devel::PPPort::PUSHu(), 42);
is(&Devel::PPPort::XPUSHu(), 43);
is(&Devel::PPPort::my_strnlen("abc\0def", 7), 3);



( run in 4.915 seconds using v1.01-cache-2.11-cpan-2e0ccfb7a10 )