File Coverage

constants.xs
Criterion Covered Total %
statement 8 14 57.1
branch n/a
condition n/a
subroutine n/a
pod n/a
total 8 14 57.1


line stmt bran cond sub pod time code
1             void
2             constant(sv)
3                 PREINIT:
4             #ifdef dXSTARG
5 32           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             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             switch (type) {
24             case PERL_constant_NOTFOUND:
25 0           sv = sv_2mortal(newSVpvf("%s is not a valid Zlib macro", s));
26 0           PUSHs(sv);
27 0                     break;
28                     case PERL_constant_NOTDEF:
29 0                     sv = sv_2mortal(newSVpvf(
30             "Your vendor has not defined Zlib macro %s, used", s));
31 0           PUSHs(sv);
32 0                     break;
33                     case PERL_constant_ISIV:
34 28                     EXTEND(SP, 1);
35 28                     PUSHs(&PL_sv_undef);
36 28                     PUSHi(iv);
37 28                     break;
38             /* Uncomment this if you need to return NOs
39             case PERL_constant_ISNO:
40             EXTEND(SP, 1);
41             PUSHs(&PL_sv_undef);
42             PUSHs(&PL_sv_no);
43             break; */
44             /* Uncomment this if you need to return NVs
45                     case PERL_constant_ISNV:
46                       EXTEND(SP, 1);
47                       PUSHs(&PL_sv_undef);
48                       PUSHn(nv);
49                       break; */
50             case PERL_constant_ISPV:
51 4           EXTEND(SP, 1);
52 4           PUSHs(&PL_sv_undef);
53 4           PUSHp(pv, strlen(pv));
54             break;
55             /* Uncomment this if you need to return PVNs
56                     case PERL_constant_ISPVN:
57                       EXTEND(SP, 1);
58                       PUSHs(&PL_sv_undef);
59                       PUSHp(pv, iv);
60                       break; */
61             /* Uncomment this if you need to return SVs
62                     case PERL_constant_ISSV:
63                       EXTEND(SP, 1);
64                       PUSHs(&PL_sv_undef);
65                       PUSHs(sv);
66                       break; */
67             /* Uncomment this if you need to return UNDEFs
68                     case PERL_constant_ISUNDEF:
69                       break; */
70             /* Uncomment this if you need to return UVs
71                     case PERL_constant_ISUV:
72                       EXTEND(SP, 1);
73                       PUSHs(&PL_sv_undef);
74                       PUSHu((UV)iv);
75                       break; */
76             /* Uncomment this if you need to return YESs
77                     case PERL_constant_ISYES:
78                       EXTEND(SP, 1);
79                       PUSHs(&PL_sv_undef);
80                       PUSHs(&PL_sv_yes);
81                       break; */
82             default:
83             sv = sv_2mortal(newSVpvf(
84             "Unexpected return type %d while processing Zlib macro %s, used",
85             type, s));
86             PUSHs(sv);
87             }
88