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 + -
显示快捷键?