Initial commit
[text-levenshtein-edlib.git] / fallback / const-xs.inc
CommitLineData
a99d15a3
MG
1void
2constant(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 =
26 sv_2mortal(newSVpvf("%s is not a valid Text::Levenshtein::Edlib macro", s));
27 PUSHs(sv);
28 break;
29 case PERL_constant_NOTDEF:
30 sv = sv_2mortal(newSVpvf(
31 "Your vendor has not defined Text::Levenshtein::Edlib macro %s, used",
32 s));
33 PUSHs(sv);
34 break;
35 case PERL_constant_ISIV:
36 EXTEND(SP, 1);
37 PUSHs(&PL_sv_undef);
38 PUSHi(iv);
39 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 sv = sv_2mortal(newSVpvf(
87 "Unexpected return type %d while processing Text::Levenshtein::Edlib macro %s, used",
88 type, s));
89 PUSHs(sv);
90 }
This page took 0.015037 seconds and 4 git commands to generate.