This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to Devel::PPPort 3.00_03.
[perl5.git] / ext / Devel / PPPort / parts / inc / newRV
1 ################################################################################
2 ##
3 ##  $Revision: 4 $
4 ##  $Author: mhx $
5 ##  $Date: 2004/08/13 12:45:56 +0200 $
6 ##
7 ################################################################################
8 ##
9 ##  Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
10 ##  Version 2.x, Copyright (C) 2001, Paul Marquess.
11 ##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
12 ##
13 ##  This program is free software; you can redistribute it and/or
14 ##  modify it under the same terms as Perl itself.
15 ##
16 ################################################################################
17
18 =provides
19
20 newRV_inc
21 newRV_noinc
22
23 =implementation
24
25 __UNDEFINED__  newRV_inc(sv)  newRV(sv)   /* Replace */
26
27 #ifndef newRV_noinc
28 #if { NEED newRV_noinc }
29 SV *
30 newRV_noinc(SV *sv)
31 {
32   SV *rv = (SV *)newRV(sv);
33   SvREFCNT_dec(sv);
34   return rv;
35 }
36 #endif
37 #endif
38
39 =xsinit
40
41 #define NEED_newRV_noinc
42
43 =xsubs
44
45 U32
46 newRV_inc_REFCNT()
47         PREINIT:
48                 SV *sv, *rv;
49         CODE:
50                 sv = newSViv(42);
51                 rv = newRV_inc(sv);
52                 SvREFCNT_dec(sv);
53                 RETVAL = SvREFCNT(sv);
54                 sv_2mortal(rv);
55         OUTPUT:
56                 RETVAL
57
58 U32
59 newRV_noinc_REFCNT()
60         PREINIT:
61                 SV *sv, *rv;
62         CODE:
63                 sv = newSViv(42);
64                 rv = newRV_noinc(sv);
65                 RETVAL = SvREFCNT(sv);
66                 sv_2mortal(rv);
67         OUTPUT:
68                 RETVAL
69
70 =tests plan => 2
71
72 ok(&Devel::PPPort::newRV_inc_REFCNT, 1);
73 ok(&Devel::PPPort::newRV_noinc_REFCNT, 1);
74