1 ################################################################################
5 ## $Date: 2010/03/07 13:15:45 +0100 $
7 ################################################################################
9 ## Version 3.x, Copyright (C) 2004-2010, Marcus Holland-Moritz.
10 ## Version 2.x, Copyright (C) 2001, Paul Marquess.
11 ## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
13 ## This program is free software; you can redistribute it and/or
14 ## modify it under the same terms as Perl itself.
16 ################################################################################
29 # ifdef PERL_USE_GCC_BRACE_GROUPS
30 # define SvREFCNT_inc(sv) \
32 SV * const _sv = (SV*)(sv); \
38 # define SvREFCNT_inc(sv) \
39 ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL)
43 #ifndef SvREFCNT_inc_simple
44 # ifdef PERL_USE_GCC_BRACE_GROUPS
45 # define SvREFCNT_inc_simple(sv) \
52 # define SvREFCNT_inc_simple(sv) \
53 ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL)
57 #ifndef SvREFCNT_inc_NN
58 # ifdef PERL_USE_GCC_BRACE_GROUPS
59 # define SvREFCNT_inc_NN(sv) \
61 SV * const _sv = (SV*)(sv); \
66 # define SvREFCNT_inc_NN(sv) \
67 (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv)
71 #ifndef SvREFCNT_inc_void
72 # ifdef PERL_USE_GCC_BRACE_GROUPS
73 # define SvREFCNT_inc_void(sv) \
75 SV * const _sv = (SV*)(sv); \
77 (void)(SvREFCNT(_sv)++); \
80 # define SvREFCNT_inc_void(sv) \
81 (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0)
85 __UNDEFINED__ SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END
86 __UNDEFINED__ SvREFCNT_inc_simple_NN(sv) (++SvREFCNT(sv), (SV*)(sv))
87 __UNDEFINED__ SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT((SV*)(sv)))
88 __UNDEFINED__ SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv)))
98 mXPUSHi(SvREFCNT(sv) == 1);
99 svr = SvREFCNT_inc(sv);
101 mXPUSHi(SvREFCNT(sv) == 2);
102 svr = SvREFCNT_inc_simple(sv);
104 mXPUSHi(SvREFCNT(sv) == 3);
105 svr = SvREFCNT_inc_NN(sv);
107 mXPUSHi(SvREFCNT(sv) == 4);
108 svr = SvREFCNT_inc_simple_NN(sv);
110 mXPUSHi(SvREFCNT(sv) == 5);
111 SvREFCNT_inc_void(sv);
112 mXPUSHi(SvREFCNT(sv) == 6);
113 SvREFCNT_inc_simple_void(sv);
114 mXPUSHi(SvREFCNT(sv) == 7);
115 SvREFCNT_inc_void_NN(sv);
116 mXPUSHi(SvREFCNT(sv) == 8);
117 SvREFCNT_inc_simple_void_NN(sv);
118 mXPUSHi(SvREFCNT(sv) == 9);
119 while (SvREFCNT(sv) > 1)
121 mXPUSHi(SvREFCNT(sv) == 1);
127 for (Devel::PPPort::SvREFCNT()) {
128 ok(defined $_ and $_);