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;	Uncomment this if you need to return IVs */
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	type = constant(aTHX_ s, len);
19      /* Return 1 or 2 items. First is error message, or undef if no error.
20           Second, if present, is found value */
21        switch (type) {
22        case PERL_constant_NOTFOUND:
23          sv = sv_2mortal(newSVpvf("%s is not a valid Log::Syslog::Fast macro", s));
24          PUSHs(sv);
25          break;
26        case PERL_constant_NOTDEF:
27          sv = sv_2mortal(newSVpvf(
28	    "Your vendor has not defined Log::Syslog::Fast macro %s, used", s));
29          PUSHs(sv);
30          break;
31	/* Uncomment this if you need to return IVs
32        case PERL_constant_ISIV:
33          EXTEND(SP, 1);
34          PUSHs(&PL_sv_undef);
35          PUSHi(iv);
36          break; */
37	/* Uncomment this if you need to return NOs
38        case PERL_constant_ISNO:
39          EXTEND(SP, 1);
40          PUSHs(&PL_sv_undef);
41          PUSHs(&PL_sv_no);
42          break; */
43	/* Uncomment this if you need to return NVs
44        case PERL_constant_ISNV:
45          EXTEND(SP, 1);
46          PUSHs(&PL_sv_undef);
47          PUSHn(nv);
48          break; */
49	/* Uncomment this if you need to return PVs
50        case PERL_constant_ISPV:
51          EXTEND(SP, 1);
52          PUSHs(&PL_sv_undef);
53          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 Log::Syslog::Fast macro %s, used",
85               type, s));
86          PUSHs(sv);
87        }
88