File Coverage

const-xs.inc
Criterion Covered Total %
statement 7 16 43.7
branch 4 6 66.6
condition n/a
subroutine n/a
pod n/a
total 11 22 50.0


line stmt bran cond sub pod time code
1             void
2             constant(sv)
3             PREINIT:
4             #ifdef dXSTARG
5 176 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; Uncomment this if you need to return PVs */
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 176           type = constant(aTHX_ s, len, &iv);
21             /* Return 1 or 2 items. First is error message, or undef if no error.
22             Second, if present, is found value */
23 176           switch (type) {
24             case PERL_constant_NOTFOUND:
25 0           sv =
26 0           sv_2mortal(newSVpvf("%s is not a valid Crypt::OpenSSL::EC 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 Crypt::OpenSSL::EC macro %s, used",
32             s));
33 0           PUSHs(sv);
34 0           break;
35             case PERL_constant_ISIV:
36 176 50         EXTEND(SP, 1);
37 176           PUSHs(&PL_sv_undef);
38 176 100         PUSHi(iv);
39 176           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             /* Uncomment this if you need to return PVs
53             case PERL_constant_ISPV:
54             EXTEND(SP, 1);
55             PUSHs(&PL_sv_undef);
56             PUSHp(pv, strlen(pv));
57             break; */
58             /* Uncomment this if you need to return PVNs
59             case PERL_constant_ISPVN:
60             EXTEND(SP, 1);
61             PUSHs(&PL_sv_undef);
62             PUSHp(pv, iv);
63             break; */
64             /* Uncomment this if you need to return SVs
65             case PERL_constant_ISSV:
66             EXTEND(SP, 1);
67             PUSHs(&PL_sv_undef);
68             PUSHs(sv);
69             break; */
70             /* Uncomment this if you need to return UNDEFs
71             case PERL_constant_ISUNDEF:
72             break; */
73             /* Uncomment this if you need to return UVs
74             case PERL_constant_ISUV:
75             EXTEND(SP, 1);
76             PUSHs(&PL_sv_undef);
77             PUSHu((UV)iv);
78             break; */
79             /* Uncomment this if you need to return YESs
80             case PERL_constant_ISYES:
81             EXTEND(SP, 1);
82             PUSHs(&PL_sv_undef);
83             PUSHs(&PL_sv_yes);
84             break; */
85             default:
86 0           sv = sv_2mortal(newSVpvf(
87             "Unexpected return type %d while processing Crypt::OpenSSL::EC macro %s, used",
88             type, s));
89 0           PUSHs(sv);
90             }