File Coverage

constants.xs
Criterion Covered Total %
statement 11 24 45.8
branch 6 14 42.8
condition n/a
subroutine n/a
pod n/a
total 17 38 44.7


line stmt bran cond sub pod time code
1             void
2             constant(sv)
3             PREINIT:
4             #ifdef dXSTARG
5 57 50         dXSTARG; /* Faster if we have it. */
6             #else
7             dTARGET;
8             #endif
9             STRLEN len;
10             int type;
11             IV iv;
12             /* NV nv; Uncomment this if you need to return NVs */
13             const char *pv;
14             INPUT:
15             SV * sv;
16             const char * s = SvPV(sv, len);
17             PPCODE:
18             /* Change this to constant(aTHX_ s, len, &iv, &nv);
19             if you need to return both NVs and IVs */
20 57           type = constant(aTHX_ s, len, &iv, &pv);
21             /* Return 1 or 2 items. First is error message, or undef if no error.
22             Second, if present, is found value */
23 57           switch (type) {
24             case PERL_constant_NOTFOUND:
25 0           sv =
26 0           sv_2mortal(newSVpvf("%s is not a valid Zlib macro", s));
27 0           PUSHs(sv);
28 0           break;
29             case PERL_constant_NOTDEF:
30 0           sv = sv_2mortal(newSVpvf(
31             "Your vendor has not defined Zlib macro %s, used",
32             s));
33 0           PUSHs(sv);
34 0           break;
35             case PERL_constant_ISIV:
36 51 50         EXTEND(SP, 1);
37 51           PUSHs(&PL_sv_undef);
38 51 100         PUSHi(iv);
39 51           break;
40             /* Uncomment this if you need to return NOs
41             case PERL_constant_ISNO:
42             EXTEND(SP, 1);
43             PUSHs(&PL_sv_undef);
44             PUSHs(&PL_sv_no);
45             break; */
46             /* Uncomment this if you need to return NVs
47             case PERL_constant_ISNV:
48             EXTEND(SP, 1);
49             PUSHs(&PL_sv_undef);
50             PUSHn(nv);
51             break; */
52             case PERL_constant_ISPV:
53 6 50         EXTEND(SP, 1);
54 6           PUSHs(&PL_sv_undef);
55 6 50         PUSHp(pv, strlen(pv));
56 6           break;
57             /* Uncomment this if you need to return PVNs
58             case PERL_constant_ISPVN:
59             EXTEND(SP, 1);
60             PUSHs(&PL_sv_undef);
61             PUSHp(pv, iv);
62             break; */
63             /* Uncomment this if you need to return SVs
64             case PERL_constant_ISSV:
65             EXTEND(SP, 1);
66             PUSHs(&PL_sv_undef);
67             PUSHs(sv);
68             break; */
69             /* Uncomment this if you need to return UNDEFs
70             case PERL_constant_ISUNDEF:
71             break; */
72             case PERL_constant_ISUV:
73 0 0         EXTEND(SP, 1);
74 0           PUSHs(&PL_sv_undef);
75 0 0         PUSHu((UV)iv);
76 0           break;
77             /* Uncomment this if you need to return YESs
78             case PERL_constant_ISYES:
79             EXTEND(SP, 1);
80             PUSHs(&PL_sv_undef);
81             PUSHs(&PL_sv_yes);
82             break; */
83             default:
84 0           sv = sv_2mortal(newSVpvf(
85             "Unexpected return type %d while processing Zlib macro %s, used",
86             type, s));
87 0           PUSHs(sv);
88             }