Blame parts/inc/uv

Packit 7d6a7d
################################################################################
Packit 7d6a7d
##
Packit 7d6a7d
##  Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
Packit 7d6a7d
##  Version 2.x, Copyright (C) 2001, Paul Marquess.
Packit 7d6a7d
##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
Packit 7d6a7d
##
Packit 7d6a7d
##  This program is free software; you can redistribute it and/or
Packit 7d6a7d
##  modify it under the same terms as Perl itself.
Packit 7d6a7d
##
Packit 7d6a7d
################################################################################
Packit 7d6a7d
Packit 7d6a7d
=provides
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__
Packit 7d6a7d
SvUOK
Packit 7d6a7d
Packit 7d6a7d
=implementation
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  sv_setuv(sv, uv)                     \
Packit 7d6a7d
               STMT_START {                         \
Packit 7d6a7d
                 UV TeMpUv = uv;                    \
Packit 7d6a7d
                 if (TeMpUv <= IV_MAX)              \
Packit 7d6a7d
                   sv_setiv(sv, TeMpUv);            \
Packit 7d6a7d
                 else                               \
Packit 7d6a7d
                   sv_setnv(sv, (double)TeMpUv);    \
Packit 7d6a7d
               } STMT_END
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  newSVuv(uv)     ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv))
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  sv_2uv(sv)      ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv)))
Packit 7d6a7d
__UNDEFINED__  SvUVX(sv)       ((UV)SvIVX(sv))
Packit 7d6a7d
__UNDEFINED__  SvUVXx(sv)      SvUVX(sv)
Packit 7d6a7d
__UNDEFINED__  SvUV(sv)        (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv))
Packit 7d6a7d
__UNDEFINED__  SvUVx(sv)       ((PL_Sv = (sv)), SvUV(PL_Sv))
Packit 7d6a7d
Packit 7d6a7d
/* Hint: sv_uv
Packit 7d6a7d
 * Always use the SvUVx() macro instead of sv_uv().
Packit 7d6a7d
 */
Packit 7d6a7d
__UNDEFINED__  sv_uv(sv)       SvUVx(sv)
Packit 7d6a7d
Packit 7d6a7d
#if !defined(SvUOK) && defined(SvIOK_UV)
Packit 7d6a7d
#  define SvUOK(sv) SvIOK_UV(sv)
Packit 7d6a7d
#endif
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  XST_mUV(i,v)    (ST(i) = sv_2mortal(newSVuv(v))  )
Packit 7d6a7d
__UNDEFINED__  XSRETURN_UV(v)  STMT_START { XST_mUV(0,v);  XSRETURN(1); } STMT_END
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  PUSHu(u)        STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG;  } STMT_END
Packit 7d6a7d
__UNDEFINED__  XPUSHu(u)       STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END
Packit 7d6a7d
Packit 7d6a7d
=xsubs
Packit 7d6a7d
Packit 7d6a7d
SV *
Packit 7d6a7d
sv_setuv(uv)
Packit 7d6a7d
        UV uv
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                RETVAL = newSViv(1);
Packit 7d6a7d
                sv_setuv(RETVAL, uv);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
SV *
Packit 7d6a7d
newSVuv(uv)
Packit 7d6a7d
        UV uv
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                RETVAL = newSVuv(uv);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
UV
Packit 7d6a7d
sv_2uv(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                RETVAL = sv_2uv(sv);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
UV
Packit 7d6a7d
SvUVx(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                sv--;
Packit 7d6a7d
                RETVAL = SvUVx(++sv);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
void
Packit 7d6a7d
XSRETURN_UV()
Packit 7d6a7d
        PPCODE:
Packit 7d6a7d
                XSRETURN_UV(42);
Packit 7d6a7d
Packit 7d6a7d
void
Packit 7d6a7d
PUSHu()
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                dTARG;
Packit 7d6a7d
        PPCODE:
Packit 7d6a7d
                TARG = sv_newmortal();
Packit 7d6a7d
                EXTEND(SP, 1);
Packit 7d6a7d
                PUSHu(42);
Packit 7d6a7d
                XSRETURN(1);
Packit 7d6a7d
Packit 7d6a7d
void
Packit 7d6a7d
XPUSHu()
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                dTARG;
Packit 7d6a7d
        PPCODE:
Packit 7d6a7d
                TARG = sv_newmortal();
Packit 7d6a7d
                XPUSHu(43);
Packit 7d6a7d
                XSRETURN(1);
Packit 7d6a7d
Packit 7d6a7d
=tests plan => 10
Packit 7d6a7d
Packit 7d6a7d
ok(&Devel::PPPort::sv_setuv(42), 42);
Packit 7d6a7d
ok(&Devel::PPPort::newSVuv(123), 123);
Packit 7d6a7d
ok(&Devel::PPPort::sv_2uv("4711"), 4711);
Packit 7d6a7d
ok(&Devel::PPPort::sv_2uv("1735928559"), 1735928559);
Packit 7d6a7d
ok(&Devel::PPPort::SvUVx("1735928559"), 1735928559);
Packit 7d6a7d
ok(&Devel::PPPort::SvUVx(1735928559), 1735928559);
Packit 7d6a7d
ok(&Devel::PPPort::SvUVx(0xdeadbeef), 0xdeadbeef);
Packit 7d6a7d
ok(&Devel::PPPort::XSRETURN_UV(), 42);
Packit 7d6a7d
ok(&Devel::PPPort::PUSHu(), 42);
Packit 7d6a7d
ok(&Devel::PPPort::XPUSHu(), 43);