core/plugins/perl/common/fallback/const-xs.inc

changeset 14253
b63ebf84c42b
parent 6678
c633179afd00
equal deleted inserted replaced
14252:d10dda2777a9 14253:b63ebf84c42b
1 void
2 constant(sv)
3 PREINIT:
4 #ifdef dXSTARG
5 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 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 switch (type) {
24 case PERL_constant_NOTFOUND:
25 sv = sv_2mortal(newSVpvf("%s is not a valid Gaim::DebugLevel macro", s));
26 PUSHs(sv);
27 break;
28 case PERL_constant_NOTDEF:
29 sv = sv_2mortal(newSVpvf(
30 "Your vendor has not defined Gaim::DebugLevel macro %s, used", s));
31 PUSHs(sv);
32 break;
33 case PERL_constant_ISIV:
34 EXTEND(SP, 1);
35 PUSHs(&PL_sv_undef);
36 PUSHi(iv);
37 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 /* Uncomment this if you need to return PVs
51 case PERL_constant_ISPV:
52 EXTEND(SP, 1);
53 PUSHs(&PL_sv_undef);
54 PUSHp(pv, strlen(pv));
55 break; */
56 /* Uncomment this if you need to return PVNs
57 case PERL_constant_ISPVN:
58 EXTEND(SP, 1);
59 PUSHs(&PL_sv_undef);
60 PUSHp(pv, iv);
61 break; */
62 /* Uncomment this if you need to return SVs
63 case PERL_constant_ISSV:
64 EXTEND(SP, 1);
65 PUSHs(&PL_sv_undef);
66 PUSHs(sv);
67 break; */
68 /* Uncomment this if you need to return UNDEFs
69 case PERL_constant_ISUNDEF:
70 break; */
71 /* Uncomment this if you need to return UVs
72 case PERL_constant_ISUV:
73 EXTEND(SP, 1);
74 PUSHs(&PL_sv_undef);
75 PUSHu((UV)iv);
76 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 sv = sv_2mortal(newSVpvf(
85 "Unexpected return type %d while processing Gaim::DebugLevel macro %s, used",
86 type, s));
87 PUSHs(sv);
88 }

mercurial