uv
来自「source of perl for linux application,」· 代码 · 共 130 行
TXT
130 行
#################################################################################### $Revision: 15 $## $Author: mhx $## $Date: 2007/08/12 15:53:17 +0200 $###################################################################################### Version 3.x, Copyright (C) 2004-2007, Marcus Holland-Moritz.## Version 2.x, Copyright (C) 2001, Paul Marquess.## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.#### This program is free software; you can redistribute it and/or## modify it under the same terms as Perl itself.##################################################################################=provides__UNDEFINED__SvUOK=implementation__UNDEFINED__ sv_setuv(sv, uv) \ STMT_START { \ UV TeMpUv = uv; \ if (TeMpUv <= IV_MAX) \ sv_setiv(sv, TeMpUv); \ else \ sv_setnv(sv, (double)TeMpUv); \ } STMT_END__UNDEFINED__ newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv))__UNDEFINED__ sv_2uv(sv) ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv)))__UNDEFINED__ SvUVX(sv) ((UV)SvIVX(sv))__UNDEFINED__ SvUVXx(sv) SvUVX(sv)__UNDEFINED__ SvUV(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv))__UNDEFINED__ SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv))/* Hint: sv_uv * Always use the SvUVx() macro instead of sv_uv(). */__UNDEFINED__ sv_uv(sv) SvUVx(sv)#if !defined(SvUOK) && defined(SvIOK_UV)# define SvUOK(sv) SvIOK_UV(sv)#endif__UNDEFINED__ XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) )__UNDEFINED__ XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END__UNDEFINED__ PUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG; } STMT_END__UNDEFINED__ XPUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END=xsubsSV *sv_setuv(uv) UV uv CODE: RETVAL = newSViv(1); sv_setuv(RETVAL, uv); OUTPUT: RETVALSV *newSVuv(uv) UV uv CODE: RETVAL = newSVuv(uv); OUTPUT: RETVALUVsv_2uv(sv) SV *sv CODE: RETVAL = sv_2uv(sv); OUTPUT: RETVALUVSvUVx(sv) SV *sv CODE: sv--; RETVAL = SvUVx(++sv); OUTPUT: RETVALvoidXSRETURN_UV() PPCODE: XSRETURN_UV(42);voidPUSHu() PREINIT: dTARG; PPCODE: TARG = sv_newmortal(); EXTEND(SP, 1); PUSHu(42); XSRETURN(1);voidXPUSHu() PREINIT: dTARG; PPCODE: TARG = sv_newmortal(); XPUSHu(43); XSRETURN(1);=tests plan => 10ok(&Devel::PPPort::sv_setuv(42), 42);ok(&Devel::PPPort::newSVuv(123), 123);ok(&Devel::PPPort::sv_2uv("4711"), 4711);ok(&Devel::PPPort::sv_2uv("1735928559"), 1735928559);ok(&Devel::PPPort::SvUVx("1735928559"), 1735928559);ok(&Devel::PPPort::SvUVx(1735928559), 1735928559);ok(&Devel::PPPort::SvUVx(0xdeadbeef), 0xdeadbeef);ok(&Devel::PPPort::XSRETURN_UV(), 42);ok(&Devel::PPPort::PUSHu(), 42);ok(&Devel::PPPort::XPUSHu(), 43);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?