1################################################################################
2##
3##  Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
4##  Version 2.x, Copyright (C) 2001, Paul Marquess.
5##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
6##
7##  This program is free software; you can redistribute it and/or
8##  modify it under the same terms as Perl itself.
9##
10################################################################################
11
12=provides
13
14newSV_type
15
16=implementation
17
18#ifndef newSV_type
19#if defined(PERL_USE_GCC_BRACE_GROUPS)
20#  define newSV_type(t) ({ SV *_sv = newSV(0); sv_upgrade(_sv, (t)); _sv; })
21#else
22#  define newSV_type(t) ((PL_Sv = newSV(0)), sv_upgrade(PL_Sv, (t)), PL_Sv)
23#endif
24#endif
25
26=xsubs
27
28int
29newSV_type()
30        PREINIT:
31                SV* sv;
32        CODE:
33                RETVAL = 0;
34                sv = newSV_type(SVt_NULL);
35                if (SvTYPE(sv) == SVt_NULL)
36                {
37                  RETVAL++;
38                }
39                SvREFCNT_dec(sv);
40
41                sv = newSV_type(SVt_PVIV);
42                if (SvTYPE(sv) == SVt_PVIV)
43                {
44                  RETVAL++;
45                }
46                SvREFCNT_dec(sv);
47
48                sv = newSV_type(SVt_PVHV);
49                if (SvTYPE(sv) == SVt_PVHV)
50                {
51                  RETVAL++;
52                }
53                SvREFCNT_dec(sv);
54
55                sv = newSV_type(SVt_PVAV);
56                if (SvTYPE(sv) == SVt_PVAV)
57                {
58                  RETVAL++;
59                }
60                SvREFCNT_dec(sv);
61        OUTPUT:
62                RETVAL
63
64
65=tests plan => 1
66
67is(Devel::PPPort::newSV_type(), 4);
68