svrefcnt
来自「source of perl for linux application,」· 代码 · 共 131 行
TXT
131 行
#################################################################################### $Revision: 2 $## $Author: mhx $## $Date: 2007/01/02 12:32:28 +0100 $###################################################################################### 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.##################################################################################=providesSvREFCNT_incSvREFCNT_inc_simpleSvREFCNT_inc_NNSvREFCNT_inc_void__UNDEFINED__=implementation#ifndef SvREFCNT_inc# ifdef PERL_USE_GCC_BRACE_GROUPS# define SvREFCNT_inc(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ if (_sv) \ (SvREFCNT(_sv))++; \ _sv; \ })# else# define SvREFCNT_inc(sv) \ ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL)# endif#endif#ifndef SvREFCNT_inc_simple# ifdef PERL_USE_GCC_BRACE_GROUPS# define SvREFCNT_inc_simple(sv) \ ({ \ if (sv) \ (SvREFCNT(sv))++; \ (SV *)(sv); \ })# else# define SvREFCNT_inc_simple(sv) \ ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL)# endif#endif#ifndef SvREFCNT_inc_NN# ifdef PERL_USE_GCC_BRACE_GROUPS# define SvREFCNT_inc_NN(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ SvREFCNT(_sv)++; \ _sv; \ })# else# define SvREFCNT_inc_NN(sv) \ (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv)# endif#endif#ifndef SvREFCNT_inc_void# ifdef PERL_USE_GCC_BRACE_GROUPS# define SvREFCNT_inc_void(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ if (_sv) \ (void)(SvREFCNT(_sv)++); \ })# else# define SvREFCNT_inc_void(sv) \ (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0)# endif#endif__UNDEFINED__ SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END__UNDEFINED__ SvREFCNT_inc_simple_NN(sv) (++SvREFCNT(sv), (SV*)(sv))__UNDEFINED__ SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT((SV*)(sv)))__UNDEFINED__ SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv)))=xsubsvoidSvREFCNT() PREINIT: SV *sv, *svr; PPCODE: sv = newSV(0); XPUSHs(newSViv(SvREFCNT(sv) == 1)); svr = SvREFCNT_inc(sv); XPUSHs(newSViv(sv == svr)); XPUSHs(newSViv(SvREFCNT(sv) == 2)); svr = SvREFCNT_inc_simple(sv); XPUSHs(newSViv(sv == svr)); XPUSHs(newSViv(SvREFCNT(sv) == 3)); svr = SvREFCNT_inc_NN(sv); XPUSHs(newSViv(sv == svr)); XPUSHs(newSViv(SvREFCNT(sv) == 4)); svr = SvREFCNT_inc_simple_NN(sv); XPUSHs(newSViv(sv == svr)); XPUSHs(newSViv(SvREFCNT(sv) == 5)); SvREFCNT_inc_void(sv); XPUSHs(newSViv(SvREFCNT(sv) == 6)); SvREFCNT_inc_simple_void(sv); XPUSHs(newSViv(SvREFCNT(sv) == 7)); SvREFCNT_inc_void_NN(sv); XPUSHs(newSViv(SvREFCNT(sv) == 8)); SvREFCNT_inc_simple_void_NN(sv); XPUSHs(newSViv(SvREFCNT(sv) == 9)); while (SvREFCNT(sv) > 1) SvREFCNT_dec(sv); XPUSHs(newSViv(SvREFCNT(sv) == 1)); SvREFCNT_dec(sv); XSRETURN(14);=tests plan => 14for (Devel::PPPort::SvREFCNT()) { ok(defined $_ and $_);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?